2013-03-22 81 views
0

我有一個關於從MySQL數據庫的2個表中加入數據的問題。首先,我會解釋我目前有什麼,然後我想要儘可能清楚。從2個MySQL表中加入數據

我在數據庫中有2個表看起來是這樣的:

Table: Subscriptions 
Columns: 
ID   int(11) PK AI 
Klant ID int(11) 
Mail ID  int(11) 
Status  varchar(15) 
Datum  varchar(15) 

ID Klant_ID Mail_ID Status Datum 
123 6  6  90  21-03-2013 
124 6  6  10  21-03-2013 
125 6  5  90  21-03-2013 
126 6  5  10  21-03-2013 
127 6  1  90  20-03-2013 
128 6  1  10  20-03-2013 
129 6  2  10  21-03-2013 
130 6  2  90  21-03-2013 
131 6  4  90  21-03-2013 
132 6  4  10  21-03-2013 

和:

Table: Mail 
Columns: 
ID int(11) PK AI 
Content longtext 
Datum varchar(15) 
Titel varchar(150) 

ID Content     Datum  Titel 
1 (alot of encoded html) 18-03-13 test 
2 (alot of encoded html) 18-03-13 test2 
4 (alot of encoded html) 18-03-13 alles weer testen 
5 (alot of encoded html) 20-03-13 testje 
6 (alot of encoded html) 21-03-13 Statusupdate week 6 

我使用這2個查詢現在選擇從表中的數據:

SELECT ID, Titel FROM Mail 
SELECT * FROM Subscriptions, 
(SELECT MAX(ID) as ids, Mail_ID FROM Subscriptions 
    WHERE Klant_ID = '".$_GET["ID"]."' GROUP BY Mail_ID) table2 
WHERE ID=table2.ids 

我想要使用JOIN來獲取查詢,以便能夠使用html創建此表:

enter image description here

我本人來說沒有得到使用JOIN,因爲我第一次使用它昨天太多的經驗,我可以做一個簡單的連接查詢,但我只是不知道如何做到這一點。如果您有更多問題,請在評論中提問。如果有人能幫助我,這將是偉大的!

回答

1

這是,如果你想獲得最後的數據你的表

SELECT Mail_ID, Titel, Status, Subscriptions.Datum FROM Subscriptions 
JOIN Mail ON (Subscription.Mail_ID=Mail.ID) 
    WHERE Klant_ID = '".$_GET["ID"]."' GROUP BY Mail_ID 

行的順序是隨機的被加入, 之間的簡單連接,查詢是正確的。

1

嘗試:

select mail.id, mail.titel, subscriptions.status, subscriptions.datum 
from mail join subscriptions on mail.id = subscriptions.mail_id 
+0

被@JaMaBing提供最簡單,最快捷的方式,但如果你有一個像'Datum'對你的領域的許多相同的名字,你需要給您想要選擇的表格和列的別名。 – ksugiarto 2013-03-22 09:03:22

0

Tyvm @kolonel peteruk,@Kaii和@JaMaBing爲您解答!

在您的幫助下,我能夠將我的查詢與您的查詢合併。我終於得到它使用此查詢工作:

SELECT Mail.ID, Mail.Titel, Subscriptions.ID, Subscriptions.Status, Subscriptions.Datum,  Subscriptions.Mail_ID, Subscriptions.Mail_ID, Subscriptions.Klant_ID 
FROM NAW.Subscriptions 
JOIN NAW.Mail 
ON Mail.ID = Subscriptions.Mail_ID, 
(SELECT MAX(Subscriptions.ID) as ids, Mail_ID 
FROM NAW.Subscriptions 
WHERE Klant_ID =6 
GROUP BY Mail_ID) table2 
WHERE Subscriptions.ID=table2.ids 
0
SELECT e.ID ,e.Titel,ea.Status,ea.Datum 
    FROM Mail e 
     LEFT JOIN Subscriptions ea 
      ON e.ID = ea.Mail_ID 
      WHERE ea.Klant_ID = '".$_GET["ID"]."' 
      GROUP BY Mail_ID) 
    ORDER BY e.ID ASC