保持SQL干

Nic*_*ner 1 mysql sql dry

这是我正在运行的MySQL查询:

-- get the sid of every supplier who does not supply both a red and green part
SELECT Suppliers.sid, Parts.color
FROM Suppliers
JOIN Catalog ON Catalog.sid = Suppliers.sid
JOIN Parts ON Parts.pid = Catalog.pid
WHERE Suppliers.sid NOT IN (
    SELECT Suppliers.sid
    FROM Suppliers
    JOIN Catalog ON Catalog.sid = Suppliers.sid
    JOIN Parts ON Parts.pid = Catalog.pid
    WHERE Parts.color IN ('red', 'green')
    GROUP BY Suppliers.sid
    HAVING COUNT(DISTINCT Parts.color) = 2
)
ORDER BY Suppliers.sid DESC;
Run Code Online (Sandbox Code Playgroud)

如您所见,重复两次:

FROM Suppliers
JOIN Catalog ON Catalog.sid = Suppliers.sid
JOIN Parts ON Parts.pid = Catalog.pid
Run Code Online (Sandbox Code Playgroud)

我该怎么做只宣告一次,并引用它两次?或者这是否表明我的整个查询都存在缺陷?

当我有15个不同的查询我正在使用相同的三行运行时,问题就更加严重了.

scw*_*ner 5

如果要在整个系统中继续使用表关系,那么您要查看的内容称为视图.