MySQL 联合和连接

标签 mysql join

我有下表

purchase_order         item
------------------     ------------
id (PK)                id (PK)
deleted                deleted
name                   name
                       purchase_order_id (FK)

如何返回链接到未删除、非空的purchase_order的所有商品的列表,以及没有链接到它们的商品的所有purchase_orders,无论是否删除。

例如示例表

采购订单

  id    name         deleted
  ---------------------------
  1     Big Sale     0
  2     Other Sale   1
  3     Empty Sale   0

项目

  id    name         deleted  purchase_order_id
  ----------------------------------------------
  1     Fruit        1        1
  2     Bread        0        1
  3     Water        0        2

正确的查询给了我这个:

po_id name          item_id  name
------------------------------------
1      Big Sale     2        Bread
3      Other Sale   NULL     NULL

编辑:这是我必须要做的,但问题是规定 i.deleted = 0,它会阻止任何未加入项目的行返回

SELECT po.id, po.name, i.id, i.name
FROM purchase_order po
LEFT JOIN item i ON i.purchase_order_id=po.id
WHERE po.deleted = 0 AND i.deleted = 0

最佳答案

@strawberry 给了我答案

SELECT po.id, po.name, i.id, i.name
FROM purchase_order po
LEFT JOIN item i ON i.purchase_order_id=po.id AND i.deleted = 0
WHERE po.deleted = 0

关于MySQL 联合和连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40491822/

相关文章:

php - MySQL查询多个复选框值

mysql - 只有一个条件的一个查询中对多个表的多次更新

mysql - Crystal Report 记录过滤 每个记录有 3 种不同的方式 CR10

mysql - SQL:如何查找只参加过一项事件的人

php - 使用从数据库中选择的不同数据发送组邮件

php - 从 mysql 表中删除逗号集

mysql - 需要从多个表中选择

MySQL:检测到大型连接表中至少存在 1 条记录

sql - 自定义表连接

mysql - 用于显示完整节点的sql查询