如何正确连接具有多对一关系的表

约瑟夫_J

我有六张桌子

  • 主表Orders是一个包含客户已下订单的加密表。
  • 第二个表是该表的哈希Orders表。OrdersHash.
  • 剩下的四个表都是存储表,它们都具有相同的结构。StoreA, StoreB, StoreC, & StoreD.

    订单表

    订单编号 | 其余行...

    订单哈希表

    订单编号 | orderIdHash | 其余行..

    四个存储表都共享此结构。

    orderIdHash | 客户 ID | 其余行..

仅使用customerId我试图查询四个存储表以查看是否有任何存储表包含customerId. 如果在customerId四个商店表中的任何一个中找到 ,我想使用orderIdHash使我回到原始Orders表并返回找到的任何订单的行。

在此处输入图片说明

如果我为 Mike 使用 customerId,我希望 Orders 表中的第 1 行。

这是我到目前为止所尝试的。

"SELECT 

    o.dateShipped       AS orderShipped,
    o.shipped           AS shipped,
    o.recieved          AS recieved

    FROM Orders o

    JOIN OrdersHash oHash
        ON o.orderId = oHash.orderId
    JOIN StoreA a
        ON ohash.orderIdHash = a.orderIdHash
    JOIN StoreB b
        ON ohash.orderIdHash = b.orderIdHash
    JOIN StoreC c
        ON ohash.orderIdHash = c.orderIdHash
    JOIN StoreD d
        ON ohash.orderIdHash = d.orderIdHash

    WHERE
    a.customerId = :customerId1
    OR b.customerId = :customerId2
    OR c.customerId = :customerId3
    OR d.customerId = :customerId4";

**customerId 1,2,3,4 都是相同的值。我必须在 PDO 中使用不同的名称进行绑定。

这将返回一个结果,但当我只需要表中的一条记录时,它似乎为Orders商店中的每一行返回相同的行并具有匹配项orderIdHashOrders

预先感谢您的帮助。

缺口

似乎您可能想要UNION存储结果,然后其存储JOINOrders表格中。通过使用UNION而不是UNION ALL,我们可以只选择不同的orderIdHash值,确保Order在结果表中每个值只得到一行像这样的东西:

SELECT o.dateShipped       AS orderShipped,
       o.shipped           AS shipped,
       o.recieved          AS recieved
FROM (SELECT customerId, orderIdHash
      FROM (SELECT customerId, orderIdHash FROM StoreA
            UNION
            SELECT customerId, orderIdHash FROM StoreB
            UNION
            SELECT customerId, orderIdHash FROM StoreC
            UNION
            SELECT customerId, orderIdHash FROM StoreD
            ) stores
      WHERE customerId = :customerId) c
JOIN OrdersHash oHash ON oHash.orderIdHash = c.orderIdHash
JOIN Orders o ON o.orderId = oHash.orderId

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Postgresql中创建具有多对一关系的表

来自分类Dev

按日期获取具有多对一关系的多个表的最后一条记录

来自分类Dev

根据该关系从具有一对多和多对一关系的表中查询数据

来自分类Dev

使用Thymeleaf发布具有多对一关系的数据

来自分类Dev

如何使用休眠Lucene搜索具有多对一关系的实体

来自分类Dev

在“车辆”表上插入或更新违反外键约束,车辆与用户表具有多对一关系

来自分类Dev

具有一对多/多对一关系的POJO数据(JDBC)

来自分类Dev

具有一对多/多对一关系的POJO数据(JDBC)

来自分类Dev

具有两个多对一关系的实体关系

来自分类Dev

当“父”表具有复合PK时,如何在JPA中建立一对一关系的模型?

来自分类Dev

如果关系具有属性,如何实现一对一关系?

来自分类Dev

EF代码优先:具有多个多对一关系的实体类型

来自分类Dev

symfony3:为具有多对一关系的列的实体创建表单

来自分类Dev

保存具有多对一关系的Django ORM对象时出现问题

来自分类Dev

Symfony主义查询生成器查找具有多对一关系的实体

来自分类Dev

为具有多对一关系的列保存对象时出错

来自分类Dev

为具有多对一关系的列保存对象时出错

来自分类Dev

Zend2-Doctrine2:创建具有多对一关系的新实体

来自分类Dev

EF代码优先:具有多个多对一关系的实体类型

来自分类Dev

Ruby on Rails中具有多对一关系的模型中的“显示”和“索引”路由问题

来自分类Dev

Django查询多对一关系,如何检索数据多对一关系

来自分类Dev

哪个表具有一对一关系中的外键有关系吗?

来自分类Dev

有没有一种方法可以简化具有多对一关系的Linq查询?

来自分类Dev

有没有一种方法可以简化具有多对一关系的Linq查询?

来自分类Dev

多对一关系laravel

来自分类Dev

Laravel 多对一关系

来自分类Dev

JPA:如何保存具有一对一关系的两个实体?

来自分类Dev

如何检查用户是否具有一对一关系的角色?

来自分类Dev

如何使用Hibernate保存具有一对一关系的两个类?

Related 相关文章

  1. 1

    在Postgresql中创建具有多对一关系的表

  2. 2

    按日期获取具有多对一关系的多个表的最后一条记录

  3. 3

    根据该关系从具有一对多和多对一关系的表中查询数据

  4. 4

    使用Thymeleaf发布具有多对一关系的数据

  5. 5

    如何使用休眠Lucene搜索具有多对一关系的实体

  6. 6

    在“车辆”表上插入或更新违反外键约束,车辆与用户表具有多对一关系

  7. 7

    具有一对多/多对一关系的POJO数据(JDBC)

  8. 8

    具有一对多/多对一关系的POJO数据(JDBC)

  9. 9

    具有两个多对一关系的实体关系

  10. 10

    当“父”表具有复合PK时,如何在JPA中建立一对一关系的模型?

  11. 11

    如果关系具有属性,如何实现一对一关系?

  12. 12

    EF代码优先:具有多个多对一关系的实体类型

  13. 13

    symfony3:为具有多对一关系的列的实体创建表单

  14. 14

    保存具有多对一关系的Django ORM对象时出现问题

  15. 15

    Symfony主义查询生成器查找具有多对一关系的实体

  16. 16

    为具有多对一关系的列保存对象时出错

  17. 17

    为具有多对一关系的列保存对象时出错

  18. 18

    Zend2-Doctrine2:创建具有多对一关系的新实体

  19. 19

    EF代码优先:具有多个多对一关系的实体类型

  20. 20

    Ruby on Rails中具有多对一关系的模型中的“显示”和“索引”路由问题

  21. 21

    Django查询多对一关系,如何检索数据多对一关系

  22. 22

    哪个表具有一对一关系中的外键有关系吗?

  23. 23

    有没有一种方法可以简化具有多对一关系的Linq查询?

  24. 24

    有没有一种方法可以简化具有多对一关系的Linq查询?

  25. 25

    多对一关系laravel

  26. 26

    Laravel 多对一关系

  27. 27

    JPA:如何保存具有一对一关系的两个实体?

  28. 28

    如何检查用户是否具有一对一关系的角色?

  29. 29

    如何使用Hibernate保存具有一对一关系的两个类?

热门标签

归档