从2个MySQL表中加入数据

时间:2013-03-22 08:54:45

标签: mysql join

我有一个关于从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

我正在使用这两个查询来从表中选择数据:

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的经验,因为我昨天第一次使用它,我能够做一个简单的JOIN查询,但我只是不知道如何做到这一点。如果您有更多问题,请在评论中提出。如果有人能帮助我,那就太棒了!

4 个答案:

答案 0 :(得分: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 :(得分:1)

尝试:

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

答案 2 :(得分: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

答案 3 :(得分: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