将多个表连接在一起

时间:2013-04-11 10:51:48

标签: mysql

我正在修改我之前的情况,我想知道SALES ORDER中的序列详细信息与交付收据中填写的序列详细信息顺序如果正确的话。下面有三个表,(1)表A - 这是我执行下面脚本时的当前输出。 (2)表B - 由于序列细节,我想要加入的另一个表(表B)。 (3)表所需的输出 - 我想要实现..考虑: 如果basetype = 17那么它应该在另一列(SO_SERIAL)中插入序列号 如果basetype = 15,那么它应该在另一个coloumn(DR_SERIAL)中插入序列详细信息。 通过这种方式,我能够分析SO中使用的序列与DR中使用的不同/相同。

感谢您的帮助。

select a.CardCode 'BPNAME', c.itemcode, a.DocEntry 'SO_DOCENTRY', a.DocNum 'SO Num', c.ObjType'SO_Btype',
b.docEntry 'DR_DOCENTRY',b.BaseRef 'DR_num',b.ObjType 'dr_type'
from ORDR a 
LEFT join dln1 b on a.docentry = b.baseentry 
left join RDR1 c on a.DocEntry = c.DocEntry

表A.

BP      ITEMCODE   SO_DOCENTRY   SO_NUM    SO_BTYPE    DR_DOCENTRY    DR_NUM   DR_TYPE
======================================================================================
CITALI  TYB20001M   144900       20152733    17         130775    20152733     15

表B.

SERIAL               ITEMCODE     BASEENTRY   BASENUM  BASETYPE  QUANTITY    CARDCODE
=====================================================================================
MCWF-12001-20120601  TYB20001M    144900      20152733  17        10.000000   CITALI    
MBAL-13001-20130101  TYB20001M    130775      103073    15        5.000000    CITALI    

期望的输出:

BP      ITEMCODE   SO_NUM    SO_BTYPE   SO_SERIAL            DR_NUM   DR_TYPE     DR_SERIAL
============================================================================================
CITALI  TYB20001M  20152733   17         MCWF-12001-20120601  20152733  15    AL-13001-20130101

3 个答案:

答案 0 :(得分:0)

  

通过这种方式,我能够分析SO中使用的序列与DR中使用的序列不同/相同。

要匹配带有dr条目的条目,您可以将表b加入两次,第一次参加'so'条目,然后第二次参加'dr'条目。所以你会得到“标题”,“SoEntry”,“DrEntry”。然后你可以比较它们。举个例子

select t1.BP, t1.ITEMCODE, t21.Serial as SO_SERIAL, t22.SERIAL as DR_Serial
FROM table1 t1
LEFT JOIN table2 t21 on t21.ITEMCODE=t1.ITEMCODE and t21.BASETYPE=17
LEFT JOIN table2 t22 on t22.ITEMCODE=t1.ITEMCODE and t22.BASETYPE=15

答案 1 :(得分:0)

您需要学习基本联接 你肯定必须加入这两张表。
这是一个很好的链接,你可以从哪里开始 http://www.w3schools.com/sql/sql_join.asp
https://stackoverflow.com/questions/7877720/the-best-tutorial-on-joins-in-mysql

答案 2 :(得分:0)

我看到了你的问题。您需要加入itemcodeBASETYPE。 所以试试这个:

select A.BP
     , A.ITEMCODE
     , A.SO_NUM
     , A.SO_BTYPE
     , B.serial as SO_SERIAL
     , A.DR_NUM
     , A.DR_TYPE
     , A.DR_SERIAL
from a 
join b on a.itemcode = b.itemcode and a.so_btype = b.basetype