2013-07-11 29 views
0

我想從3個表中檢索行 - LikeTable,ClosetTable,FollowTable來顯示一個人所關注的所有用戶的活動。這是一個網站。 ClosetTable是用戶產品的表格。 LikeTable是針對以下人員和追隨者的產品和跟蹤表的表格。mysql查詢連接表創建新聞源

目前,我有

SELECT c.user, c.productName 
FROM ClosetTable AS c 
LEFT JOIN FollowTable AS f ON c.user = f.isFollowed 
WHERE f.follows = 'tony' 

這將返回此人的行,「託尼」與產品名稱一起以下。但是,我希望完全以同樣的方式從LikeTable和FollowTable中獲取行。那麼你能建議一種只做1個查詢來從所有3個表中獲取行的方法嗎?

回答

0

你可以嘗試看起來像這樣的東西:

SELECT c.user, c.productName 
FROM FollowTable AS f 
INNER JOIN ClosetTable AS c ON c.user = f.isFollowed 
INNER JOIN LikeTable AS l ON c.user = l.userliked 
WHERE f.follows = 'tony' 

我做一些假設爲字段名稱,因爲你沒有提供您的表的結構。

此外,我建議您將FollowTable放在FROM子句中,然後將它加入到ClosetTable中,因爲您將f.follows ='tony'放入WHERE子句中。

否則,刪除WHERE子句並將條件放在INNER JOIN中。 類似於:

LEFT JOIN FollowTable AS f ON c.user = f.isFollowed AND f.follows = 'tony' 
+0

嗨謝謝您的及時回覆。你的查詢幾乎就像我想要的那樣,但是我無法區分每行來自哪個表。查詢將所有選定的字段連接在一起,而不管它來自哪個表。 例如,'code' achipa02 \t \t \t 9 miazima \t achipa02 \t \t \t 9天 '/ code' 9(product_liked)出現了兩次,當achipa02如下miazima和天空。它不應該在那裏。 – salonikaur

+0

[achipa02 \t \t \t 9 miazima \t] \ [achipa02 \t \t \t 9天] – salonikaur

+0

行本身包含來自所有表列。在我的示例中,c.user和c.productName來自「ClosetTable AS c」,但您可以添加任何其他字段。 SELECT可以如下所示: SELECT f.follows,c.user,c.productName等 –

0

更多聯接:

SELECT c.user, c.productName 
FROM ClosetTable AS c 
LEFT JOIN FollowTable AS f ON c.user = f.isFollowed 
JOIN LikeTable as l on c.user = l.liked 
WHERE f.follows = 'tony' 

或類似的東西。你不限於一個JOIN。