2015-09-08 44 views
0

我有一個簡單的數據庫與三個表:結合表信息

有助於
contributes Table

支付
payment Table

用戶
user Table

。由此有助於是兩個用戶付款表之間的關係表。我的問題是,當執行SQL語句來檢索關係屬性(例如「付費」值)並因此在語句中包含貢獻表時,查詢結果似乎會返回兩次。例如,SELECT * FROM user, payment, contributes;生產:

Query Result

鑑於SELECT * FROM user, payment;生產:

enter image description here

我唯一的猜測是,SELECT語句簡單地組合用戶的每一行與每一行付款與每行貢獻,多l一個權力集?

請原諒我,如果我錯過了任何明顯的,任何幫助將不勝感激。此外,爲圖像中奇怪的表格名稱格式道歉,這只是phpMyAdmin如何導出它們!

+1

當您不指定連接條件時,您正在進行笛卡爾連接。搜索如何加入sql表的stackoverflow。 –

回答

0
SELECT u.id, u.email, u.first_name, u.last_name, c.host, c.paid, p.name, p.total, p.portion 
FROM user u 
INNER JOIN contributes c 
ON u.id = c.user_id 
INNER JOIN payment p 
ON c.payment_id = p.id 
+0

謝謝!爲什麼它會如此廣泛,雖然'user_id'和'payment_id'是其他表ID的外鍵? –

+1

@CallanHeard因爲外鍵用於維護引用完整性,而不是執行隱式聯接。 –