如何解决在没有共同值的情况下从多个sql表输出数据
我有一个组合了几个表的选择查询。 PRODUCTION_ORDER_RESULTS
,PRODUCTION_ORDERS
和SERVICE_GUARANTY_NEW
具有相同的值,但是STOCKS
表却没有。
SELECT PR_ORDERS.ARRIVED_CITY,PR_ORDERS.MONTAJ_DATE,PR_ORDER_RESULT.TRANSFER_DATE,PR_ORDERS.P_ORDER_ID,PR_ORDER_RESULT.P_ORDER_ID,SG.SALE_CONSUMER_ID,SG.IS_SERI_SONU,S.BRAND_ID,S.PROPERTY
FROM workcube_test_1.PRODUCTION_ORDER_RESULTS PR_ORDER_RESULT,workcube_test_1.PRODUCTION_ORDERS PR_ORDERS,workcube_test_1.SERVICE_GUARANTY_NEW SG,workcube_test_1.STOCKS S
WHERE PR_ORDER_RESULT.P_ORDER_ID = PR_ORDERS.P_ORDER_ID
AND PR_ORDER_RESULT.PR_ORDER_ID = SG.PROCESS_ID
当我运行查询时,它显示如下输出。
这里的问题是PRODUCTION_ORDER_RESULTS
,PRODUCTION_ORDERS
,SERVICE_GUARANTY_NEW
返回了四个数据行,一旦我添加了STOCKS
表arrived_city
, montaj_date
,transfer_date
列与STOCKS
表的行并排,但列的值应为null,而不是数据。
我尝试的方法是STOCKS
表的UNION,但是联合表的值将被忽略,不能在html块中使用它们。
解决方法
在STOCKS
表所在的表之间还需要至少有一个连接条件,我认为在诸如STOCK_ID
之类的表中可能存在这样的列PRODUCTION_ORDER_RESULTS
与STOCKS
表联接。我认为这应该是多个返回行的原因。如果没有公共列,则由于当前查询中已有STOCK
逻辑,返回的数据将产生与CROSS JOIN
表中的记录数一样多的数据。因此,将查询重新排列为
SELECT PR_ORDERS.ARRIVED_CITY,PR_ORDERS.MONTAJ_DATE,PR_ORDER_RESULT.TRANSFER_DATE,PR_ORDERS.P_ORDER_ID,PR_ORDER_RESULT.P_ORDER_ID,SG.SALE_CONSUMER_ID,SG.IS_SERI_SONU,S.BRAND_ID,S.PROPERTY
FROM workcube_test_1.PRODUCTION_ORDER_RESULTS PR_ORDER_RESULT
JOIN workcube_test_1.PRODUCTION_ORDERS PR_ORDERS
ON PR_ORDER_RESULT.P_ORDER_ID = PR_ORDERS.P_ORDER_ID
JOIN workcube_test_1.SERVICE_GUARANTY_NEW SG
ON PR_ORDER_RESULT.PR_ORDER_ID = SG.PROCESS_ID
JOIN workcube_test_1.STOCKS S
ON PR_ORDER_RESULT.STOCK_ID = S.ID
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。