Форум: "Базы";
Текущий архив: 2005.06.06;
Скачать: [xml.tar.bz2];
Вниз
SQL запрос Найти похожие ветки
← →
Elast (2005-04-28 10:57) [0]Помогите разобраться... Есть три ТБ 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:05) [1]Мне не особо понятно, что надо найти
1.Товары общие для поставщиков - для всех поставщиков?
2.Все общие товары. - для всех поставщиков? и чем это отличается от 1?
← →
Elast (2005-04-28 11:07) [2]М.б. один товар для всех (пересечение пересечений множества товаров) или товары общие для некоторых поставщиков (объединение пересечений).
← →
Sergey13 © (2005-04-28 11:14) [3]2 [2] Elast (28.04.05 11:07)
Запрос писать лень, но...
В первом случае count(товар) в PartnerItem должен быть равен count(*) в Partner. Во втором должен быть >1.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.06.06;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.015 c