Помогите сделать запрос по выборке из БД Mysql

Vlad_c

Guest
Помогите сделать запрос по выборке из БД Mysql

Всем привет!
Бьюсь второй день с одним запросом по выборке, возможно такое можно сделать только с помощью PHP.

У меня есть больша таблица с люми подписавшимися на журналы и нужно сделать распечатку реестра для почты, но хитрым способом т.е. в редакции помещают в конверт максимум 3 журнала и вносят в реестр. если фирма подписалась на 4 или более то разбивка идет так же по 3, ну и если есть остаток из 2-х или 1 журнала запихивают в последний конверт.
Выглядит вот так:

Название организации | Кол-во шт.
имя 1,2(2)/05
имя 3,СВ/05
имя2 1/04,2,5/05

т.е. в данном примере фирма (имя) подписалась на 1 номер, 2 но в двух экземплярах на 2005 год на 3 номер со спец.выпуском на 2005 год, фирма (имя2) подписалась на 1 на 2004 год,2,5 номера на 2005 год т.е. главный факт в том что в поле кол-во не должно привышать 3-х экземпляров, и не важно что там несколько одних и тех же номеров или это номер и спец.выпуск если больше 3-х то нужно эту фирму вывести еще раз.
Каждый реестр имеет свое имя по которому то же выберается подписчик, в БД вот такие поля, которые связаны с этой выборкой:
num1 col1 year1 sv1 pikup1
num2 col2 year2 sv2 pikup2
....................................................................
num12 col12 year12 sv12 pikup12

num1..12 - номер журнала бывает от 1-12
col1..12 - количество штук этого номера
year1...12 - год журнала на который пописались
sv1..12 - есть ли с этим номером журнала спец. выпуск (принимает значение 0 или 1)
pikup1..12 - название реестра к которому относится этот журнал (собственно тогда и сам подписчик)
т.е. для фирмы имя2 поля заполнены так:
num1=1
col1=1
year1=04
sv1=0

num2=2
col2=1
year2=05
sv2=0

num5=5
col5=1
year5=05
sv5=0


вот такие дела может кто помочь сделать запрос или с применением php

я дошел только до того что нахожу подписчиков для этого реестра но как подсчитать кол-во и вывести эту же фирму с еще ставшимися номерами????
$name_r-название реестра
$rr=mysql_query("select * from ok where pikup1 = '$name_r' or pikup2 = '$name_r' or pikup3 = '$name_r' or pikup4 = '$name_r' or pikup5 = '$name_r' or pikup6 = '$name_r' or pikup7 '$name_r' or pikup8 = '$name_r' or pikup9 = '$name_r' or pikup10 = '$name_r' or pikup11 = '$name_r' or pikup12 = '$name_r'");
for($i=0; $i<mysql_num_rows($rr); $i++)
{ $ff=@mysql_fetch_array($rr);
вывод
}

-~{}~ 20.04.05 12:14:

простите если длинный вопрос просто я не знал как еще более компактно описать тему
 

Кром

Новичок
Vlad_c, есть одна проблема. База спроектирована неправильно. Будет лучше, если ты перепроектируешь базу для начала.
 

Vlad_c

Guest
хорошо, как именно?

-~{}~ 20.04.05 12:25:

правда наверное будет сложно у меня очень много скриптов уже готово, около 15 и они все работают именно с этими полями базы
 

Кром

Новичок
Опиши те данные, которыми ты располагаешь, только не привязываясь к текущей структуре таблиц.
Т.е.: есть фирмы (какие параметры), есть журналы (какие параметры) и т.д.
Заодно покажу структуру своих таблиц.

-~{}~ 20.04.05 11:28:

>правда наверное будет сложно у меня очень много скриптов уже готово, около 15 и они все работают именно с этими полями базы

Замечательно, что их только 15. Это немного.
 

Vlad_c

Guest
это таблица одного из журналов

id name_org date year period1 period2 sfera location address zip phone plat num_abon num1 col1 month1 year1 sv1 pikup1 num2 col2 month2 year2 sv2 pikup2 num3 col3 month3 year3 sv3 pikup3 num4 col4 month4 year4 sv4 pikup4 num5 col5 month5 year5 sv5 pikup5 num6 col6 month6 year6 sv6 pikup6 num7 col7 month7 year7 sv7 pikup7 num8 col8 month8 year8 sv8 pikup8 num9 col9 month9 year9 sv9 pikup9 num10 col10 month10 year10 sv10 pikup10 num11 col11 month11 year11 sv11 pikup11 num12 col12 month12 year12 sv12 pikup12 price_need1 price_real1 alarm1 price_need2 price_real2 alarm2 descr

данные на подписку я беру из существующих таблиц в exele
там данные такие:
Месяц ОБЛАСТЬ Наименование организации Адрес Индекс Телефон № п/п Дата Сумма АБ. ЯНВАРЬ ФЕВРАЛЬ МАРТ АПРЕЛЬ МАЙ ИЮНЬ
если подписались на 1-е полугодие и соответственно меняются месяцы для второго полугодия
если описывать все нюансы займет очень много времени я в этой подписке месяц разбирался т.к. нет единой базы и все лежит в разных файлах и везде разная структура
 

Кром

Новичок
Не удивительно, что ты месяц разбирался. В такой структуре черт ногу сломит.
К сожалению, тот блок бессвязным имен столбцов, которые ты привел, не дает никакого представления о данных, которыми ты оперируешь. Вернее некоторое представление все таки складывается. Это каша из данных, которую ты сам не в состоянии описать.
Что в такой ситуации делать. Самый правильный вариант, это описать для себя все данные и потом продумать новую структуру таблиц, отделив имя организации от цены, месяцы от описания, периоды от телефонов и т.д.
Пока ты сам в этом не разберешся, никто на форуме этого тоже не сможет сделать.
А уж потом можно будет говорить о составлении запросов и прочем.
 

Vlad_c

Guest
а возможно ли сделать эту выборку с моей структурой таблицы пусть даже с применением php?

-~{}~ 20.04.05 13:17:

все ясно спасибо за ответ
 
Сверху