在没有共同值的情况下从多个sql表输出数据

问题描述

我有一个组合了几个表的选择查询PRODUCTION_ORDER_RESULTSPRODUCTION_ORDERSSERVICE_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

当我运行查询时,它显示如下输出

enter image description here

这里的问题是PRODUCTION_ORDER_RESULTSPRODUCTION_ORDERSSERVICE_GUaraNTY_NEW返回了四个数据行,一旦我添加STOCKSarrived_citymontaj_datetransfer_date列与STOCKS表的行并排,但列的值应为null,而不是数据。

我尝试的方法STOCKS表的UNION,但是联合表的值将被忽略,不能在html块中使用它们。

enter image description here

解决方法

STOCKS表所在的表之间还需要至少有一个连接条件,我认为在诸如STOCK_ID之类的表中可能存在这样的列PRODUCTION_ORDER_RESULTSSTOCKS表联接。我认为这应该是多个返回行的原因。如果没有公共列,则由于当前查询中已有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