![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
yerdnA |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 16.6.2004 Репутация: нет Всего: нет |
Структура таблиц 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 |
|
||||||||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
И все-таки
Есть твой запрос:
Назовем его, скажем, запрос А. Создадим из него запрос А1:
Аналогично создадим запросы А2 и А3. Теперь свяжем запросы и создадим запрос Б:
Понимаешь, что получилось? данные слеплены, теперь осталось получить необходимые данные из запроса Б. Доделку и удаление лишнего сделаешь сам - мне влом. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||||||
|
|||||||||
<Spawn> |
|
||||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 4 Всего: 64 |
Такого тебе не удасться достичь одним селектом. Ты куда все выводишь? На веб страницу? В любом случае сначала нужно получить все отделы:
а потом сделать цикл по ним и сделать селект такого вида:
после чего вывести все так как тебе нужно Это сообщение отредактировал(а) <Spawn> - 24.6.2004, 20:03 -------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
||||
|
|||||
yerdnA |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 16.6.2004 Репутация: нет Всего: нет |
Спасибо за содействие. Теперь знаю что надо. Свой путь познания БД начинал с MS Access (он очень сильно ламероориентирован), в нем есть такая штука как перекрестный запрос (crosstab query), по незнанию думал что это стандартная инструкция SQL . Оказывается что в MySQL подобное надо ручками делать. Ну что ж, будем.
|
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MySQL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |