database - 如何根据子类型在查询中选择表?

标签 database mysql

我有 4 个表,Transactions、Orders - SuperType,然后是 Site_Orders 和 Product_Orders SubType

[Transactions]
id PK
Orders_id [FK Orders.orders_id]

[Orders]
Orders_id PK
Orders_type

[Site_Orders]
Orders_id [FK Orders.orders_id]
== other data ==

[Product_Orders]
Orders_id [FK Orders.orders_id]
== other data ==

我的问题是,我如何创建一个连接语句来提取事务并关联并从 subType 表中获取正确的信息?或者我必须使用 PHP 来检查子类型并在那里完成逻辑吗?

谢谢

最佳答案

SELECT ...
FROM Orders o
JOIN Transactions t ON t.Orders_id = o.Orders_id
LEFT OUTER JOIN Site_Orders so 
  ON so.Orders_id = o.Orders_id AND o.Orders_type = 'S' 
LEFT OUTER JOIN Product_Orders po 
  ON po.Orders_id = o.Orders_id AND o.Orders_type = 'P' 

关于database - 如何根据子类型在查询中选择表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3713720/

相关文章:

mysql:从连接返回多个 csv 列

sql-server - 需要拆分 SQL Server 数据库以进行存档和报告的方法

mysql - Importing 1GO SQL File => ERROR 2013 (HY000) at line 23 : Lost connection to MySQL server during query

java - 数据库错误: "NullPointerException: Attempt to invoke virtual method getApplicationInfo()... on a null object reference"

mysql - 我的 SQL 查询太慢以至于超时。另一个解决方案?

database - django,多个数据库,配置问题: "Error importing database router"

java - 如何解决无法加载身份验证插件 'caching_sha2_password'问题

mysql查询优化

c# - 比较两个不同数据库的所有字段: Whats the way to go?

mysql - 如何在调用一种模型方法期间更改 Kohana 框架内的 mysql 分隔符?