程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了加入 3 个表,如果唯一则创建新行大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决加入 3 个表,如果唯一则创建新行?

开发过程中遇到加入 3 个表,如果唯一则创建新行的问题如何解决?下面主要结合日常开发的经验,给出你关于加入 3 个表,如果唯一则创建新行的解决方法建议,希望对你解决加入 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,请注明来意。
标签:3个表加入