通过查看第三张表找出两个表是如何连接的

维克多·埃里克森(Viktor Eriksson)

我有几张桌子:

boxes Table         ToysTable       Kitchen Table
boxId | ID          Name  | ID      Type   |  ID
-------------      --------------   -----------
1   | TOY1        Ball    | TOY1     Fork  | KIT1
1   | TOY2        Car     | TOY2     Knife | KIT2
1   | KIT1        Puzzle  | TOY3     Spoon | KIT3
2   | KIT2

我想找到包含我的东西的盒子。因此,如果我问:哪个盒子里有叉子和我的汽车玩具。在这种情况下,我想获取该框的ID。

我该怎么做?

Sqlfiddle:http://sqlfiddle.com/#!4 / 11b0a / 3/0

编辑:更新了厨房的列名称以键入。

Edit2:最终解决方案变成这样(谢谢Gordon):

select b.boxid
from boxes b left join
     (select id, 'toy' type
      from toys t
      where t.name in ('Car', 'Fork')
      union all
      select id, 'kitchen' type
      from kitchen k
      where k.name in ('Car', 'Fork')
     ) tk
     on b.id = tk.id
group by b.boxid
having count(distinct tk.type) = 2;
戈登·利诺夫

这有点棘手,因为id可能对任何一个表都使用。一种解决方案是group by使用union all这是一种通用方法,假设两个参考表中的id具有不同的值:

select b.boxid
from boxes b left join
     (select id, name 
      from toys t
      union all
      select id, name
      from kitchen k
     ) tk
     on b.id = tk.id
group by b.boxid
having sum(case when tk.name = 'Car' then 1 else 0 end) > 0 and
       sum(case when tk.name = 'Fork' then 1 else 0 end) > 0;

注意:在MySQL中,我将此查询写为:

select b.boxid
from boxes b left join
     (select id, name 
      from toys t
      where t.name in ('Car', 'Fork')
      union all
      select id, name
      from kitchen k
      where k.name in ('Car', 'Fork')
     ) tk
     on b.id = tk.id
group by b.boxid
having count(distinct name) = 2;

实际上,您可以在任何SQL方言中以这种方式编写它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用来自第三张表的共同ID重新连接两个SQL表

来自分类Dev

在第三张表中联接两个表数据

来自分类Dev

如何通过第三张表Laravel选择?

来自分类Dev

关联两个都属于第三张独立表的两个表

来自分类Dev

如何在第三张图像中合并两个不同的图像?

来自分类Dev

获取链接到第三张表的两个不同表上两个不同列的总和

来自分类Dev

如何使用phpexcel在第三张表中总结两张不同的excel表

来自分类Dev

使用SQL中的联接查询从两个差异表与第三张表中检索两列的计数

来自分类Dev

Mysql根据两张表的数据在第三张表中插入数据

来自分类Dev

sql查询联接两个表和一个布尔标志,以指示它是否包含来自第三张表的任何单词

来自分类Dev

填充第三张表以保持效率

来自分类Dev

从第三张表中获取记录

来自分类Dev

Oracle SQL获取第三张表的参考

来自分类Dev

Laravel从第三张表返回属性

来自分类Dev

使用第三张表定义我的选择

来自分类Dev

在第三张桌子上联接两个桌子

来自分类Dev

如何在Entity Framework中向第三张表添加额外的列?

来自分类Dev

如何加入我的结果集和第三张表?

来自分类Dev

如何显示条件来自第三张表的LEFT JOIN结果?

来自分类Dev

如何从多对多关系中获取数据在symfony原则中的第三张表

来自分类Dev

如何显示条件来自第三张表的LEFT JOIN结果?

来自分类Dev

如何在Laravel中使用hasOne关系查询第三张表?

来自分类Dev

Postgresql - 三张表。两个连接。不相关的结果

来自分类Dev

SQL Query: JOIN 三张表然后加入第三张表后不显示结果

来自分类Dev

Laravel 4:获取当前ID以将来自2个表的ID放入第三张表

来自分类Dev

如何从第二张表到第三张表共有的第三张表共有的第二列中获取数据列?

来自分类Dev

SQL连接问题:第三张表的字段不在Excel中显示,但在SQL中显示

来自分类Dev

如何使用第二张表中的ID更新第三张表中的ID来匹配第二张表中的MSSQL表值?

来自分类Dev

Laravel雄辩的关系,而不是与父表无关的第三张表上的Join

Related 相关文章

  1. 1

    使用来自第三张表的共同ID重新连接两个SQL表

  2. 2

    在第三张表中联接两个表数据

  3. 3

    如何通过第三张表Laravel选择?

  4. 4

    关联两个都属于第三张独立表的两个表

  5. 5

    如何在第三张图像中合并两个不同的图像?

  6. 6

    获取链接到第三张表的两个不同表上两个不同列的总和

  7. 7

    如何使用phpexcel在第三张表中总结两张不同的excel表

  8. 8

    使用SQL中的联接查询从两个差异表与第三张表中检索两列的计数

  9. 9

    Mysql根据两张表的数据在第三张表中插入数据

  10. 10

    sql查询联接两个表和一个布尔标志,以指示它是否包含来自第三张表的任何单词

  11. 11

    填充第三张表以保持效率

  12. 12

    从第三张表中获取记录

  13. 13

    Oracle SQL获取第三张表的参考

  14. 14

    Laravel从第三张表返回属性

  15. 15

    使用第三张表定义我的选择

  16. 16

    在第三张桌子上联接两个桌子

  17. 17

    如何在Entity Framework中向第三张表添加额外的列?

  18. 18

    如何加入我的结果集和第三张表?

  19. 19

    如何显示条件来自第三张表的LEFT JOIN结果?

  20. 20

    如何从多对多关系中获取数据在symfony原则中的第三张表

  21. 21

    如何显示条件来自第三张表的LEFT JOIN结果?

  22. 22

    如何在Laravel中使用hasOne关系查询第三张表?

  23. 23

    Postgresql - 三张表。两个连接。不相关的结果

  24. 24

    SQL Query: JOIN 三张表然后加入第三张表后不显示结果

  25. 25

    Laravel 4:获取当前ID以将来自2个表的ID放入第三张表

  26. 26

    如何从第二张表到第三张表共有的第三张表共有的第二列中获取数据列?

  27. 27

    SQL连接问题:第三张表的字段不在Excel中显示,但在SQL中显示

  28. 28

    如何使用第二张表中的ID更新第三张表中的ID来匹配第二张表中的MSSQL表值?

  29. 29

    Laravel雄辩的关系,而不是与父表无关的第三张表上的Join

热门标签

归档