两个查询和两个内连接在一起

时间:2011-03-27 23:13:40

标签: php sql inner-join

我在这里有两个疑问 第一个显示猫链接= 3的列表。

Select * 
  from Listings 
  JOIN Category ON Listings.Category = Category.CategoryID 
 WHERE Link = '3'

第二个显示连接帐户的列表。

SELECT *  
  FROM Listings 
  JOIN Accounts ON Listings.Account_ID = Accounts.Account_ID

我的尝试类似于:

SELECT * 
  FROM (Select * 
          from Listings 
          JOIN Category ON Listings.Category = Category.CategoryID 
         WHERE Link = '3') 
  JOIN Accounts ON Listings.Account_ID = Accounts.Account_ID

但这似乎不起作用,任何解决方案?

3 个答案:

答案 0 :(得分:2)

这样的事情会起作用吗?

SELECT      Listings.*
FROM        Listings
INNER JOIN  Accounts ON Listings.Account_ID = Accounts.Account_ID
INNER JOIN  Category ON Category.CategoryID = Listings.Category
WHERE       Link = '3'

您没有指定“链接”所在的表,因此如果您使用此代码(假设它符合您的要求),我建议您指定“链接”字段所在的表格,如下所示: WHERE TableName.Link = '3'

答案 1 :(得分:2)

WHERE ...应该在两个连接之后。

您可以让SELECT Listings.*显示表格列表中的所有字段,或SELECT *显示所有3个已连接表格中的所有字段,或SELECT Listings.*, Accounts.*显示这2个表格中的所有字段等。

SELECT * 
FROM Listings l
  INNER JOIN Category c
    ON l.Category = c.CategoryID 
  INNER JOIN Accounts a
    ON l.Account_ID = a.Account_ID
WHERE c.Link = '3'
;

答案 2 :(得分:0)

你能发布错误吗?很可能错误告诉您所有表必须具有名称。这意味着你为临时表做的子选择必须有一个表别名。

SELECT * FROM (Select * from Listings INNER JOIN Category ON Listings.Category = Category.CategoryID WHERE Link = '3') as T1 INNER JOIN Accounts ON T1.Account_ID=Accounts.Account_ID;