首页 > 解决方案 > sql执行3个自然连接然后联合然后一起

问题描述

我想自然加入 3 次(Product是库存),然后将它们联合在一起,但以下内容没有出现错误near "(": syntax error: (,我想查看所有匹配项目的modelprice

    (SELECT model, price FROM PC) NATURAL JOIN (SELECT model FROM Product WHERE maker='B')

    UNION

    (SELECT model, price FROM Laptop) NATURAL JOIN (SELECT model FROM Product WHERE maker='B')

    UNION

    (SELECT model, price FROM Printer) NATURAL JOIN (SELECT model FROM Product WHERE maker='B');

谁能帮忙?谢谢。

标签: sqlsyntax

解决方案


三个表的联合然后到第四个的半连接呢?:

WITH T AS ( SELECT model, price FROM PC 
            UNION 
            SELECT model, price FROM Laptop 
            UNION 
            SELECT model, price FROM Printer )
SELECT * 
  FROM T 
 WHERE model IN ( SELECT model FROM Product WHERE maker = 'B' );

推荐阅读