Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

формирование запроса IB [D6, IB6.x]


erika ©   (2005-07-15 16:49:00) 

Формирую запрос на вывод данных из таблиц слудующим образом

select dknom, dkp, name
from discont, sells
inner join klients on discont.ink=klients.ink
where (discont.idk  in ( select sells.idk  from sells  group by IDK having count (IDK)=1))

идея была такова: вывести всех клиентов (klients) по дисконтным книжкам (discont), с количеством покупок (sells) равным единице.

резельтата моего запроса: выводятся записи с одинаковым номером дисконтной книжки (discont  поле dknom) множество количество раз.

Вопрос: где ошибка в запросе


DSKalugin   (2005-07-15 17:50:00) [1]

Не рекомендуется смешивать в запросе явное объединение таблиц
inner joinи неявное from discont, sells where
Переведи все на joinи самому станет понятен запрос


Reindeer Moss Eater   (2005-07-15 17:46:00) [2]

Достаточно прикрутить третью таблицу к этому
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1121417544&n=1


Ольга   (2005-07-15 17:43:00) [3]

erika ©
Приведите структуры таблиц - дело пойдет быстрее. Что есть номер покупки, порядковый?, Тогда вообще не к чему огород городить, все просто.


Reindeer Moss Eater   (2005-07-15 17:39:00) [4]

Внутренний запрос можно исправить.
Но тогда перестанет работать внешний, так как там IN.
А правильный внутренний запрос вернет как минимум два поля.


Ольга   (2005-07-15 17:35:00) [5]

Разберите для начала внутренний запрос. Когда он будет выбирать то, что надо, тогда можно его встраивать во внешний. Может вы перемудрили, вот такой запрос не подходит? :

select sells.idk  from sells

inner join discont on discont.idk = sells.idk

where sells.<номер покупки>=1


erika   (2005-07-15 17:07:00) [6]

т.е. мне необходимо добавить

...where (discont.idk  in ( select sells.idk  from sells

inner join discont on discont.idk = sells.idk

group by IDK having count (IDK)=1))


Ольга   (2005-07-15 17:03:00) [7]

1. Таблицы sells и discont не связаны
2. Не понятно зачем group by, если нет агрегатных функций


Наверх

Титульная страница Поиск, карта сайта Написать письмо