Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 选择提供完全相同零件的成对SID的查询:_Mysql_Sql - Fatal编程技术网

Mysql 选择提供完全相同零件的成对SID的查询:

Mysql 选择提供完全相同零件的成对SID的查询:,mysql,sql,Mysql,Sql,我在MySQL中有以下关系: Suppliers(**sid**; sname; city), Parts(**pid**; pname; color), Catalog(**sid**; **pid**; cost), 钥匙在中间* 我想找到: 供应商对s1;s2,以便s1和s2提供完全相同的零件。 至少提供两个其他人不提供的零件的供应商。 1.供应商对s1;s2,以便s1和s2提供完全相同的零件: select c1.sid,c2.sid from catalog c1 join cata

我在MySQL中有以下关系:

Suppliers(**sid**; sname; city),
Parts(**pid**; pname; color),
Catalog(**sid**; **pid**; cost),
钥匙在中间*

我想找到:

供应商对s1;s2,以便s1和s2提供完全相同的零件。 至少提供两个其他人不提供的零件的供应商。
1.供应商对s1;s2,以便s1和s2提供完全相同的零件:

select c1.sid,c2.sid
from catalog c1 join catalog c2 on c1.pid = c2.pid and c1.sid < c2.sid 
          and not exists 
          (
             select 1 
             from catalog c3 join catalog c4 
             on c3.sid = c1.id and c4.id = c2.sid 
                               and c3.pid <> c4.pid
          )
2.至少提供两个非其他人提供的零件的供应商

select c1.sid
from catalog c1 join catalog c2 on c1.sid = c2.sid and c1.pid < c2.pid 
          and not exists 
          (
             select 1 
             from catalog  
             where sid <> c1.sid and (pid = c1.pid or pid = c2.pid)
          )

我可以想象这样的事情会起作用。基本上,只要在不等于相同供应商和相同零件id的情况下进行左连接,然后查看连接数量是否等于未成功连接的行数。

非常感谢您的回复。我自己写了以下查询,但我不确定它是否正确。请让我知道。谢谢

一,

选择T1.sid,T2.sid

从T1到T2

其中选择T1.sid,C2.pid

   FROM( SELECT c1.pid

       FROM Catalog C1

       GROUP BY c1.sid) AS T1, Catalog C2

  WHERE T1.sid=c2.sid)
=

二,

选择T1.S

从T1开始

如果不存在,选择c1.sid作为S,选择c1.pid作为p1,选择C2.pid作为p2

           FROM catalog AS C1, Catalog as C2

            WHERE c1.sid=c2.sid AND

            C1.pid<>c2.pid) AS T1

        EXCEPT

        ( SELECT c3.sid AS S1, c3.pid AS p3, C4.pid AS p4

           FROM catalog AS C3, Catalog as C4

           WHERE c3.sid=c4.sid AND

            c3.pid<>c4.pid) AS T2)
不存在选择c3.sid作为S1,选择c3.pid作为p3,选择C4.pid作为p4

           FROM catalog AS C3, Catalog as C4

           WHERE c3.sid=c4.sid AND

            c3.pid<>c4.pid) AS T2)

        EXCEPT

        (SELECT c1.sid AS S, c1.pid AS p1, C2.pid AS p2

           FROM catalog AS C1, Catalog as C2

            WHERE c1.sid=c2.sid AND

            C1.pid<>c2.pid) AS T1
           FROM catalog AS C1, Catalog as C2

            WHERE c1.sid=c2.sid AND

            C1.pid<>c2.pid) AS T1

        EXCEPT

        ( SELECT c3.sid AS S1, c3.pid AS p3, C4.pid AS p4

           FROM catalog AS C3, Catalog as C4

           WHERE c3.sid=c4.sid AND

            c3.pid<>c4.pid) AS T2)
           FROM catalog AS C3, Catalog as C4

           WHERE c3.sid=c4.sid AND

            c3.pid<>c4.pid) AS T2)

        EXCEPT

        (SELECT c1.sid AS S, c1.pid AS p1, C2.pid AS p2

           FROM catalog AS C1, Catalog as C2

            WHERE c1.sid=c2.sid AND

            C1.pid<>c2.pid) AS T1