2017-07-06 75 views
0

如何在外部SELECT子句中返回d.titleu.nameSQL:从嵌套查询中获取属性

SELECT c.id, c.name 
FROM components c 
INNER JOIN publications p 
ON c.id = p.component_id 
AND p.document_id IN 
    (SELECT d.id FROM documents d WHERE user_id IN 
     (SELECT u.id FROM users u WHERE u.brand_id IN (39, 41) 
    ) 
) 

我得到这个错误,当我在上面一行扔d.title:在

missing FROM-clause entry for table "d" LINE 1 

包我使用的需求,这些价值上一行返回作出任何利用了出来结果。

结构

一个User有许多Documents,并且PublicationsDocumentsComponents之间的连接表。

+3

如果您显示了表的结构,那么给出明确的答案会更容易一些,但通常,使用连接而不是IN子句可以让您引用要应用标准的表。 –

+0

正如@rd_nielsen所说,如果你想在select语句中引用它们,你将需要加入这些表(p.document_id = documents.id和documents.user_id = users.id)。 –

回答

2

使用下面的查询 -

SELECT c.id, c.name, d.title, u.name 
FROM components c 
INNER JOIN publications p ON c.id = p.component_id 
INNER JOIN documents d ON d.id = p.document_id 
INNER JOIN users u ON d.user_id = u.id 
AND u.brand_id IN (39, 41) 

希望这有助于。

+0

这非常有帮助。干杯! –