使用where子句加入SQL查询

时间:2013-03-19 10:17:41

标签: sql join where

我在MYSQL数据库中有2个表,如下所示:

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子句从前一页获取ID:

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

我想要的是使用以下查询加入此查询:

SELECT ID, Titel FROM Mail; 

修改

从你的所有答案和评论我认为我开始认为我的问题可能是完全错误的..我会解释我需要它的地方,我甚至可能不需要加入?我目前有一张表格,其中包含来自'Klant'的数据,如下所示:

enter image description here

意思是我添加另一个表格,其中包含“邮件”中的所有ID和标题。对于我可能对你造成的困惑,我很抱歉,因为我对我的问题不太清楚。我希望这可以清理我想要的东西,你们可以告诉我,如果我甚至需要加入这个或者我可以做些什么吗?

我还是学生,这是我第一次使用JOIN,我无法理解这一点。如果有人能告诉我如何做到这一点或者把我推向正确的方向那就太棒了!

4 个答案:

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

等等

答案 1 :(得分: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"]."'

答案 2 :(得分: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"]."'

答案 3 :(得分:0)

很难看到JOIN如何适用于您问题中的示例。

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代替查询中的列,如果查询未提取该列的数据)