大佬教程收集整理的这篇文章主要介绍了加入 3 个表,如果唯一则创建新行,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想加入三个表。
我加入前两个:
Purchase orders
+-----+----------+
| ID | LOCATIOn |
+-----+----------+
| 1 | Canada |
| 2 | USA |
+-----+----------+
Stock
+-----+----------+----------------+
| SKU | Onorder |PurchaSEOrderID |
+-----+----------+----------------+
| ABC | 30 |2 |
| DEF | 40 |1 |
+-----+----------+----------------+
我的结果是:
+-----+----------+----------------+
| SKU | Onorder |LOCATIOn |
+-----+----------+----------------+
| ABC | 30 |USA |
| DEF | 40 |Canada |
+-----+----------+----------------+
现在我想把这个结果与另一个表结合起来,如下所示
Itemorders
+-----+----------+----------------+
| SKU | Quantity |LOCATIOn |
+-----+----------+----------------+
| ABC | 88 |USA |
| DEF | 99 |Mexico |
+-----+----------+----------------+
地点:
Join1 的位置等于表 3 的位置,并且 联接 1 的 SKU 等于表 3。
如果匹配不存在,它应该创建一个新行
所以我希望我的输出是:
+-----+----------+--------------------------+
| SKU | Onorder |Quantity |LOCATIOn |
+-----+----------+---------+----------------+
| ABC | 30 |88 |USA |
| DEF | 40 | |Canada |
| DEF | |99 |Mexico |
+-----+----------+---------+----------------+
出于某种原因,我真的无法理解这一点。我试过两个连接,一个合并,两个连接和一个联合。我正在尝试在 Laravel FWIW 中执行此操作。
非常感谢您的帮助!
我认为您会创建 2 个查询,其中都返回相同的列,然后将它们联合在一起。
将整个内容包装在子查询和 GROUP BY SKU、LOCATIOn 中,并使用聚合函数将 2 行聚合为一行。
聚合函数通常会忽略 Null 值,因此简单的 MAX() 可能会起作用。
喜欢
SELECT SKU,LOCATIOn,max(OnOrder) as OnOrder,max(Quantity) as Quantity
FROM
(
SELECT SKU,OnOrder,NULL as Quantity,LOCATIOn
FROM {stuff to build output 1}
union all
SELECT SKU,NULL as OnOrder,Quantity,LOCATIOn
FROM {stuff to build output 2}
) rs
GROUP BY SKU,LOCATIOn;
以上是大佬教程为你收集整理的加入 3 个表,如果唯一则创建新行全部内容,希望文章能够帮你解决加入 3 个表,如果唯一则创建新行所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。