我不知道我是否过度复杂化,或者我的SQL代码会出错。我想找到所有的' pid'从表格部分匹配。
以下是必要的信息。
表:Parts
:
pid, Color
表:Supplier
sid
表:Catalog
pid, sid
我正在尝试检索表pid
的{{1}}中存在Color Red和供应商的sid
。
这是我迄今为止的尝试:
Supplier
我的第二次尝试说错误,子查询返回超过1行:
SELECT pid
FROM catalog
WHERE sid = (SELECT sid
FROM 'suppliers'
WHERE sid=)(SELECT sid
FROM `catalog`
WHERE pid=)(SELECT pid
FROM `parts`
WHERE color = 'Red')
答案 0 :(得分:2)
为什么不使用两个简单的INNER JOIN
而不是那些嵌套的子查询?
SELECT c.pid
FROM catalog c
INNER JOIN suppliers s ON c.sid = s.sid
INNER JOIN parts p ON c.pid = p.pid
WHERE p.color = 'Red'
答案 1 :(得分:0)
我认为你可能会错放开放的副词。但我建议改用JOIN查询。
SELECT pid
FROM Catalog C
INNER JOIN suppliers S ON C.sid = S.sid
INNER JOIN parts P ON C.pid = P.pid
WHERE P.color = 'Red'
AND S.sid = 'your_requirement'
答案 2 :(得分:0)
您应该避免@ncdreamy建议的内部查询,而是使用JOINS。
SELECT pid
FROM catalog AS c
INNER JOIN Parts AS p ON p.pid = c.pid
INNER JOIN suppliers AS s on s.sid = c.sid
WHERE p.color = 'RED'