2016-02-17 70 views
0
SELECT m.member_name, p.agefield 
FROM members m 
JOIN profilefields p ON m.member_id = p.member_id 
WHERE m.member_gid = 1 

我想爲第三個表「group」的查詢添加'prefix'和'suffix'值。 member_id是每個表中的關鍵,但我無法理解如何進行連接。應該怎麼做?下面是一段非常有用的代碼,只是爲了看看我是否在正確的軌道上。謝謝。MySQL從第三個表添加數據

SELECT m.member_name, p.agefield, g.prefix, g.suffix 
FROM members m 
INNER JOIN profilefields p ON m.member_id = p.member_id 
INNER JOIN groups g ON g.member_id = p.member_id 
WHERE m.member_gid = 1 
+0

是M表會員ID字段名 「member_id」?你的查詢是否給出了任何錯誤? M&P和M&G一對一關係表?也許給出關於表結構的想法可能是有用的。 – smozgur

+0

你說非工作一段代碼,當前結果集是什麼? – GabrielVa

+0

另外:在這種情況下它不是強制性的,但我會保留鏈接表之間的連接,而不是間接連接的連接。所以,我會使用將組表添加到成員表中。再次,如果member_id是id字段,那麼member_gid是什麼? – smozgur

回答

1

直接改變你的第三個連接如下面加入members表。

INNER JOIN groups g ON g.member_id = m.member_id 

您的查詢應該

SELECT m.member_name, p.agefield, g.prefix, g.suffix 
FROM members m 
INNER JOIN profilefields p ON m.member_id = p.member_id 
INNER JOIN groups g ON g.member_id = m.member_id 
WHERE m.member_gid = 1 
+1

是的,我同意這是一種習慣和正確的用法,但由於INNER JOIN在這裏使用,p表應該已經返回一個id來檢索一條記錄,所以對於我認爲的解決方案無關緊要。如果我錯了,請糾正我。我仍懷疑在member_gid字段名稱。 – smozgur

+0

@smozgur,可能是也可能不是。如果成員表和profilefield之間缺少信息會怎麼樣?在這種情況下,加入p會導致信息丟失或數據不正確。但在一般情況下,是的應該沒問題。順便說一句OP說*'組'。 member_id是每個表中的關鍵* – Rahul

+0

如果profilefields包含外鍵並且使用了INNER JOIN,那麼在這種情況下,使用profilefields的member_id而不是m的member_id是非常好的。但是,我仍然同意你的看法,因爲我在關於鏈接這些表格的原始問題中也發表了評論。 – smozgur