C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
SQL запросик, в чем проблема?
Миshук
Отправлено: 14.03.2006, 19:59


Дежурный стрелочник

Группа: Участник
Сообщений: 36



Всем доброго времени суток!!!
у меня маленькая проблемка. sad.gif
Есть две таблицы (рис 1)


Присоединить изображение

Присоединить изображение

Миshук
Отправлено: 14.03.2006, 20:06


Дежурный стрелочник

Группа: Участник
Сообщений: 36



Делаю вот такой запросик и получаю вот ткаой результат(см рис)
Таким образом в результате запроса группируются все строки таблицы rbAdvantageVisit.

Присоединить изображение

Присоединить изображение

Миshук
Отправлено: 14.03.2006, 20:10


Дежурный стрелочник

Группа: Участник
Сообщений: 36



Но если добавляю условие поиска WHERE , то получается вот что(см рис) Т.е. строка 2 с нулевым значением _FirstVisit испарилась. Вроде бы RIGHT объединение а в чем проблем что-то не пойму. Подскажите пожалуйста! (SQL2000) Заранее спасибо!
(И прошу прощения за устроеный вернисаж) wink.gif

Отредактировано Миshук — 14/03/2006, 20:13

Присоединить изображение

Присоединить изображение

AVC
Отправлено: 15.03.2006, 10:47


Ветеран

Группа: Модератор
Сообщений: 1583



Если есть внешнее объединение, то оно должно распространяться на все условия и дальнейшие подчиненные связи, если они есть.
Попробуйте вставить условия отбора в условие связи on. Может сработает (точно не знаю, у Oracle другой синтаксис а MSSQL под рукой нет).

Кроме того эту проблему можно решить перенеся условия отбора на уровень ниже и организуя объединение с результатом выборки а не с таблицей. (Select from select)
Или
Использовать вычисляемое поле
Select
groupID
,groupName
,(Select count(*) From mi Where mi.groupID = av.groupID and regdate ...) as fv
From av
Миshук
Отправлено: 15.03.2006, 19:20


Дежурный стрелочник

Группа: Участник
Сообщений: 36



Привет!
Большое спасибо! Оробовал 1 и 3 способы.Сейчас еще 2 попробую. Думаю остановлюсь на более простом — первом. Еще раз большое спасибо!!!! smile.gif

Вернуться в Работа с базами данных в C++Builder