| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MySQL > Вывод результатов запроса в табличной форме. |
| Автор: yerdnA 24.6.2004, 15:59 |
| Структура таблиц deplist depid int not null primary key auto_increment depname varchar(30) not null unique talks talkid int not null primary key auto_increment filldate date not null telno tinyint not null minutes integer not null depname int not null references deplist query select talks.filldate, deplist.depname,talks.telno,talks.minutes, from deplist, talks where deplist.depid=talks.depid and filldate='2004.05.31'; Результат 31.05.2004-depar1-100-110 31.05.2004-depar1-101-90 31.05.2004-depar1-102-130 31.05.2004-depar2-201-130 31.05.2004-depar2-202-100 31.05.2004-depar2-203-100 31.05.2004-depar3-300-250 31.05.2004-depar3-301-45 31.05.2004-depar3-302-45 Какой надо построить запрос чтобы получить вот такой результат. ---depar1--|---depar2--|---depar3--| -----+-----+-----+-----+-----+-----+ telno|-min-|telno|-min-|telno|-min-| date -----+-----+-----+-----+-----+-----+ -100-|-110-|-200-|-130-|-300-|-250-|31.05.2004 -101-|-90--|-201-|-100-|-301-|-45--|31.05.2004 -102-|-130-|-203-|-100-|-303-|-45--|31.05.2004 -----+-----+-----+-----+-----+-----+ В качестве заголовка строк filldate, столбцов - depname, а на их пересечении данные telno и min. Т.е. первые два столбца относятся к depar1 3,4 столбец к depar2; 5,6 к depar3. P.S. '-' нарисовал чтобы таблица не съезжала. Перлами типа: почитай документацию или ознакомься с основами MySQL, прошу вас утруждаться. Если бы там нашел тут бы не тратил драгоценное время (свое и чужое). |
| Автор: Akina 24.6.2004, 18:06 | ||||||||
И все-таки
Есть твой запрос:
Назовем его, скажем, запрос А. Создадим из него запрос А1:
Аналогично создадим запросы А2 и А3. Теперь свяжем запросы и создадим запрос Б:
Понимаешь, что получилось? данные слеплены, теперь осталось получить необходимые данные из запроса Б. Доделку и удаление лишнего сделаешь сам - мне влом. |
| Автор: <Spawn> 24.6.2004, 20:01 | ||||
Такого тебе не удасться достичь одним селектом. Ты куда все выводишь? На веб страницу? В любом случае сначала нужно получить все отделы:
а потом сделать цикл по ним и сделать селект такого вида:
после чего вывести все так как тебе нужно |
| Автор: yerdnA 25.6.2004, 08:11 |
| Спасибо за содействие. Теперь знаю что надо. Свой путь познания БД начинал с MS Access (он очень сильно ламероориентирован), в нем есть такая штука как перекрестный запрос (crosstab query), по незнанию думал что это стандартная инструкция SQL . Оказывается что в MySQL подобное надо ручками делать. Ну что ж, будем. |