MySQL上的三表交集
Posted
技术标签:
【中文标题】MySQL上的三表交集【英文标题】:Three Table Intersection on MySQL 【发布时间】:2020-01-24 20:37:30 【问题描述】:Item_List 表:
Kaloys 表:
Naays 表:
嗨,我有三个表格,可以在提供的图像上看到,我不知道如何处理这个任务,即显示两个客户(kaloys 和 Nanays)需要的产品组合列表,包括数量。好吧,我通过输入以某种方式显示了两个客户的需求
select Item_List.PID, Item_List.Product, Item_List.supID
from Item_List where PID in (
select PID from Kaloys union distinct select PID from Nanays
);
初始输出:
但我不知道如何也显示数量列。我该怎么办?
【问题讨论】:
欢迎来到 SO。见:Why should I provide an MCRE for what seems to me to be a very simple SQL query? 【参考方案1】:您需要FULL OUTER JOIN
来执行此操作。由于 MariaDB 没有实现这些,您需要通过组合 LEFT JOIN
和 RIGHT JOIN
来模拟它们。见下文:
select
l.*, x.kqty, x.nqty
from (
select k.pid, k.qty as kqty, n.qty as nqty
from kaloys k left join nanays n on k.pid = n.pid
union
select n.pid, k.qty, n.qty
from kaloys k right join nanays n on k.pid = n.pid
) x
join item_list l on l.pid = x.pid
【讨论】:
以上是关于MySQL上的三表交集的主要内容,如果未能解决你的问题,请参考以下文章