3

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

克兰特:

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 查询,它使用 where 子句从“Klant”中选择所有内容,该子句从前一页获取 ID:

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

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

SELECT ID, Titel FROM Mail; 

编辑:

从您的所有回答和评论中,我想我开始认为我的问题可能是完全错误的。我会解释我需要它的地方,我什至可能不需要加入?我目前有一个表,其中包含来自“Klant”的数据,如下所示:

在此处输入图像描述

意思是我添加了另一个表,其中包括来自“邮件”的所有 ID 和标题。很抱歉我可能给你造成的困惑,因为我对我的问题不是很清楚。我希望这可以清除我想要的东西,你们可以告诉我是否需要加入这个或者我可以做其他事情吗?

我仍然是一名学生,这是我第一次不得不使用 JOIN,但我无法弄清楚这一点。如果有人能告诉我如何做到这一点或将我推向正确的方向,那就太好了!

4

4 回答 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'

等等

于 2013-03-19T10:21:29.943 回答
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"]."'
于 2013-03-19T10:22:51.167 回答
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"]."'
于 2013-03-19T10:25:20.317 回答
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 代替如果查询没有为该列提取数据,则为查询)

于 2013-03-19T10:26:33.030 回答