使用where子句连接SQL查询

3
我可以翻译这段文本。该MYSQL数据库中有两个表格,如下所示:
客户表:
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; 

编辑:

通过您所有的答案和评论,我开始觉得我的问题可能完全错误了...我将解释我需要它的地方,也许我甚至不需要JOIN? 我目前有一个包括“客户”数据的表,它看起来像这样:

enter image description here

这意味着我要添加另一个表,其中包括所有“邮件”的ID和标题。 很抱歉我可能会因为不清楚我的问题而引起混淆。我希望这可以澄清我想要什么,并且您们可以告诉我是否需要JOIN,还是我可以做其他的事情?

我仍然是一名学生,这是我第一次使用JOIN,我无法弄清楚。如果有人能告诉我该如何做或者指导我正确的方向,那就太棒了!


2
哪些列应该用于执行“JOIN”操作?我在您的方案中没有看到任何列。 - MarcinJuraszek
2
嗯,要连接表格,它们需要有“共同的信息”。这意味着一个表格拥有一个键(主键),该键在另一个表格中作为外键被找到。在您的表结构中是否是这种情况(这些ID是否链接在一起)? - Najzero
也许他想要一个交叉连接? - user1914530
邮件表中的ID是邮件的标识符,我想。那个表中客户的标识符是什么?换句话说,你怎么知道哪个邮件属于哪个客户?我希望在邮件表中存在一个klant_id列或类似的东西。 - JWK
你能展示一下你的精确输出吗?你期望得到什么,这对我们有用吗?也就是说,你的精确输出的大致图表。 - John Peter
显示剩余2条评论
4个回答

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"]."'

0

很难看出如何在您的问题示例中应用 JOIN。

JOIN 可以让您基于关系从多个表中提取信息。就我所见,除非 SteveP 正确并且您的 id 提供了该关系,否则您的表格没有任何方式将一个表格中的行与另一个表格中的行链接起来。

例如,如果您的 klant 表格有一个 mail_id 列,则可以执行以下操作

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

并且这将对两个表中的每个匹配对返回一行。或者,您可以使用左外连接(LEFT OUTER JOIN)从连接的左表中检索所有行,并选择性地获取右侧匹配行的数据。

如果没有任何表进行连接,您可以使用交叉连接(CROSS JOIN),它将为table1中的每一行与table2中的每一行生成一个完整的笛卡尔积。

有一些人常常将JOIN与UNION混淆。UNION允许您编写2个SELECT语句并返回两者合并/连接在一起的结果集,但这两者应该在每个查询中返回相同的列(例如,在查询中选择NULL来代替该列的数据,如果该查询不拉取该列的数据)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接