mysql - 可以加入多个领域吗?
Posted
技术标签:
【中文标题】mysql - 可以加入多个领域吗?【英文标题】:mysql - possible to join on more than one field? 【发布时间】:2011-02-02 19:10:41 【问题描述】:我正在尝试编写一个连接语句,但我发现我正在运行的查询为找到的每个标题输出相同的信息。似乎我需要在多个字段上加入表,但我不确定这是否可能?这有点难以解释,但下面的代码显示了我正在尝试完成的工作以及实际发生的事情......希望有人能够指出我正确的方向?
+----------------------------------------------------+
TABLE: NODE N
+----------------------------------------------------+
nid | vid | type | language | title | uid
22196 | 22196 | einfo | en | Contact 15 | 15
22040 | 22040 | fmp | en | John Doe | 15
22043 | 22043 | fmp | en | Jane Doe | 15
+----------------------------------------------------+
TABLE: CONTENT_FIELD_PN P
+----------------------------------------------------+
vid | nid | delta | field_name_nid
22196 | 22196 | 0 | 22040
22196 | 22196 | 1 | 22043
+----------------------------------------------------+
TABLE: CONTENT_FIELD_PP PP
+----------------------------------------------------+
vid | nid | delta | field_homephone_value
22196 | 22196 | 0 | 6505551212
22196 | 22196 | 1 | 6505551444
我正在尝试编写一个连接语句,它将产生:
+----------------------------------------------------+
TRYING TO OUTPUT
+----------------------------------------------------+
title | field_homephone_value | delta
John Doe | 6505551212 | 0
Jane Doe | 6505551444 | 1
+----------------------------------------------------+
目前的输出是什么
+----------------------------------------------------+
title | field_homephone_value | delta
John Doe | 6505551212 | 0
Jane Doe | 6505551212 | 1
+----------------------------------------------------+
THE QUERY AS IT'S CURRENTLY WRITTEN
+----------------------------------------------------+
SELECT p.field_name_nid, n2.title, p.delta, pp.field_homephone_value
FROM node n
LEFT JOIN content_field_pn p ON n.nid = p.nid
LEFT JOIN node n2 ON p.field_name_nid = n2.nid
LEFT JOIN content_field_pp pp ON p.nid = pp.nid
WHERE n.nid = 22196
GROUP BY p.delta
【问题讨论】:
【参考方案1】:您可以在on
子句中使用and
:
LEFT JOIN content_field_pp pp ON p.nid = pp.nid AND p.vid = pp.vid
^^^^^^^^^^^^^^^^^^
【讨论】:
伙计,我错过了 1 分钟! @KOGI:我想你比我快 1 分钟。也许我的回答被接受了,因为它使用了问题中的表定义。【参考方案2】:您可以加入多个领域...
SELECT `blah` FROM `a` LEFT JOIN `b` ON `b`.`id` = `a`.`id` AND `b`.`field2` = `a`.`field2`
【讨论】:
以上是关于mysql - 可以加入多个领域吗?的主要内容,如果未能解决你的问题,请参考以下文章