2013-03-19 152 views
3

我有一个MySQL数据库至极这个样子的2个表:加入与SQL查询的WHERE子句

Klant:

ID Naam   Email Soort Status 
6 test   test  test2 
7 status test test  test 20 
8 soort test  test  test  
9 soort test 2 test2 Museum 

邮件:

ID Content     Datum  Titel 
1 (lots of encoded HTML) 18-03-13 test 
2 (lots of encoded HTML) 18-03-13 test2 
4 (lots of encoded HTML) 18-03-13 alles weer testen 

(是的,我仍然测试很多^^)

现在我有一个SQL查询,选择所有从'Klant'的where子句,从前一个p获取ID年龄:

$strSQL = "SELECT * FROM Klant WHERE ID = '".$_GET["ID"]."' "; 

我想要的是加入这个查询用下面的查询:

SELECT ID, Titel FROM Mail; 

编辑:

从所有的答案和意见,我想我开始觉得我的问题也许是完全错误的..我会解释我需要它的地方,我可能甚至不需要加入?我现在有一个表至极包括来自“Klant”它看起来像这样的数据:

enter image description here

的意思是,我想补充另一个表,其中包括所有的ID和标题的从“邮件”。对于我可能与你造成的困惑,我感到抱歉,因为我对我的问题并不清楚。我希望这可能会清理我想要的,你们也许可以告诉我,我是否需要加入或者可以采取其他措施?

我仍然是一名学生,这是我第一次使用JOIN,我无法弄清楚这一点。如果任何人都可以告诉我如何做到这一点,或者让我朝着正确的方向发展,那将会很棒!

+2

应使用哪些列执行'JOIN'?我在你的计划中看不到任何东西。 – MarcinJuraszek 2013-03-19 10:19:25

+2

好吧,要加入他们需要具有“共同信息”的表格。这意味着,一个表拥有一个可以在另一个表中作为外键找到的键(主键)。这是你的表结构(这些ID链接在一起)的情况? – Najzero 2013-03-19 10:20:00

+0

这两个表格之间的关系密钥在哪里? – 2013-03-19 10:21:08

回答

0

这是很难看到一个JOIN适用于在本例你的问题。

A JOIN让我们根据关系从多个表中提取信息。据我所知,你的表没有任何方法将一行与另一行中的行连接起来,除非SteveP是正确的,并且你的ID提供了这种关系。

例如,如果你的klant表有一个mail_id列,那么你可以做

SELECT * 
FROM klant 
JOIN mail ON klant.mail_id = mail.id 

,这将返回一个排为两个表中所有匹配的行对。或者,您可以使用LEFT OUTER JOIN从JOIN左侧的表中拉出所有行,并可选择右侧匹配行中的数据。

如果没有加入表的任何内容,则可以使用CROSS JOIN,它将使table1中的每行与table2中的每行都返回一个完整的笛卡尔。

一些人经常与JOIN混淆的是UNION,它允许您编写2条SELECT语句并返回两个组合/连接在一起的结果集,但这些应该在每个查询中返回相同的列(例如,选择NULL如果查询不为该列提取数据,则在查询中的列的列)

3
SELECT * FROM Klant t1 
JOIN 
SELECT ID, Titel FROM Mail t2 
ON t1.ID = t2.ID 
WHERE t1.Name = 'test' 

要具有所期望的结果执行以下操作:

SELECT * FROM Klant t1 
JOIN 
SELECT ID, Titel FROM Mail t2 
ON t1.ID = t2.ID 

如果你想有一个特定的行比刚才添加的where子句:

WHERE t1.ID = 6 

WHERE t1.Naam = 'test' 

0

我猜你想加入在表格之间通用的ID字段。

select * from Klant, Mail where Klant.ID = '".$_GET["ID"]."' and Klant.ID = Mail.ID 

你也可以做

select * from Klant 
    join Mail on Mail.ID = Klant.ID 
    where Klant.ID = '".$_GET["ID"]."' 
0

为此,您可以直接通过下面的查询:

select k.ID,k.Naam, k.Email,k.Soort,k.Status, m.ID,m.Titel from Klant k, Mail m where k.ID = m.ID and k.ID = '".$_GET["ID"]."'