【发布时间】:2015-02-03 07:40:33
【问题描述】:
假设我们有三个表。表 2 和表 3 与表 1 相交,但彼此不相交。
两个单独的 INNER JOIN 查询获取表 1 & 2 和表 1 & 3 之间的公共列值。
现在我的问题是如何将这两个交叉点放在一起;简单地 INNER JOINing 这些表不会产生任何结果:
以下将是理想的结果。
这是我已经达到的理想结果,但还不够接近。
SELECT * FROM
(SELECT `tag_map`.`id`,`resource`.`resource_type_id`,`resource`.`title` FROM `tag_map`
INNER JOIN `resource`
ON `tag_map`.`tag_id` = '8'
AND `tag_map`.`entity_type_id`= '1'
AND `resource`.`id` = `tag_map`.`entity_id`) AS t1
INNER JOIN
(SELECT `name`,`location` FROM `tag_map`
INNER JOIN `userinfo`
ON `tag_map`.`tag_id` = '8'
AND `tag_map`.`entity_type_id`= '2'
AND `userinfo`.`id` = `tag_map`.`entity_id`) AS t2
这个查询的问题是 JOIN 子句混合了行,我得到了这个
【问题讨论】:
-
使用
union而不是join
标签: mysql inner-join intersection