![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SQL запрос [D6, IB6.x]
Elast © (2005-04-28 10:57:00)Помогите разобраться... Есть три ТБ Partner, Item, PartnerItem.
Т.е. много-ко-многим. Необходимо найти 1.Товары общие для поставщиков и 2.Все общие товары. Т.е. объединение пересечений и пересечение пересечений товаров. Сделал в ХР
For select PN.NamePartner, IT.NameItem, PI.Id_Partner, PI.Id_Item
from Partner PN, Item IT, PartnerItem PI
where (PN.Id_Partner = PI.Id_Partner) and
(IT.Id_Item = PI.Id_Item )
order by NameItem
Into :NamPar, :NamIte, :Id_Par, :Id_Ite
do begin
Select Count(Id_PartnerItem)
from PartnerItem
where Id_Partner <> :Id_Par and
Id_Item = :Id_Ite
Into :Cou;
If (:Cou > 1) then
suspend;
end
Вопрос: на SQL это реализуется, вроде бы рекурсия намечается...
Sergey13 (2005-04-28 11:14:00) [1]2 [2] Elast (28.04.05 11:07)
Запрос писать лень, но...
В первом случае count(товар) в PartnerItem должен быть равен count(*) в Partner. Во втором должен быть >1.
Elast (2005-04-28 11:07:00) [2]М.б. один товар для всех (пересечение пересечений множества товаров) или товары общие для некоторых поставщиков (объединение пересечений).
Sergey13 (2005-04-28 11:05:00) [3]Мне не особо понятно, что надо найти
1.Товары общие для поставщиков - для всех поставщиков?
2.Все общие товары. - для всех поставщиков? и чем это отличается от 1?