2013-05-01 71 views
0

我有一個用戶表和一個銷售表。銷售表中有一列user_id,我希望加入到用戶表的id列中。我的預期結果是獲取銷售表中的所有行,其user_id與用戶表中的id列匹配,因此我可以顯示登錄用戶的信息。mysql連接返回整個表而不是結果

我的查詢是這樣的:

SELECT * FROM user u JOIN sales s ON (u.id = s.user_id) 

會發生什麼事,雖然是我剛剛得到的表的每一行的結果。

任何幫助表示讚賞。謝謝。

+0

您沒有在查詢中的任何位置使用登錄用戶的ID,因此數據庫將爲所有用戶返回數據。通常,您希望在末尾添加'WHERE u.id = @ mycurrentuserid',其中'@ mycurrentuserid'是登錄用戶的ID。 – 2013-05-01 08:33:30

回答

1

您必須添加WHERE條款,篩選出當前用戶的行,像

SELECT * FROM user u JOIN sales s ON (u.id = s.user_id) 
WHERE u.User = 'someone' 
+0

爲此歡呼。 – devon93 2013-05-01 12:13:56

0

在當前的SQL要加入的表,但你的使用情況更像是左外連接。 使用此查詢

SELECT column_name(s) 
FROM sales s 
LEFT JOIN user u 
ON u.user_id=s.user_id 
0

您嘗試正在結果的笛卡兒積查詢。所以它顯示了表中的所有行。

您應該嘗試Inner Join,Left Outer JoinRight Outer Join而不是根據您的需要。

+0

笛卡爾怎麼樣?沒有限定符的'JOIN'和'INNER JOIN'是一樣的。 – 2013-05-01 11:33:21

相關問題