【发布时间】:2015-08-30 11:16:18
【问题描述】:
我有一个如下所示的 mysql 表:
表支付类型
ID PaymentCode PaymentName
1 P1 CASH
2 P2 TRANSFER
3 P3 CREDIT CARD
餐桌人
ID ID_PERSON PersonName
1 123 GEORGE
2 124 HENRY
3 125 MICHAEL
4 126 ANNA
表 INVOICE_IN
ID ID_INVOICE_IN Person_ID Amount PaymentType_ID
1 II-001 1 100 1
2 II-002 2 200 1
3 II-003 4 300 2
表 INVOICE_OUT
ID ID_INVOICE_OUT Person_ID Amount PaymentType_ID
1 IO-001 1 500 2
1 IO-002 3 600 3
我想要这样的结果:
ID_INVOICE_IN PaymentCode PersonName Amount ID_INVOICE_OUT PaymentCode PersonName Amount
II-001 P1 George 100 IO-001 P2 George 500
II-002 P1 Henry 200 IO-002 P3 Michael 600
II-003 P2 Anna 300 NULL NULL NULL NULL
我有一个这样的查询:
SELECT INVOICE_IN.ID_INVOICE_IN, PaymentType.PaymentCode, PERSONS.PersonName, INVOICE_IN.Amount FROM INVOICE_IN LEFT JOIN PaymentType ON PaymentType.id = INVOICE_IN.PaymentType_ID LEFT JOIN PERSONS ON PERSONS.id = INVOICE_IN.Person_ID
查询成功显示 invoice_in 的 4 列。
我也有这样的查询:
SELECT INVOICE_OUT.ID_INVOICE_OUT, PaymentType.PaymentCode, PERSONS.PersonName, INVOICE_OUT.Amount FROM INVOICE_OUT LEFT JOIN PaymentType ON PaymentType.id = INVOICE_OUT.PaymentType_ID LEFT JOIN PERSONS ON PERSONS.id = INVOICE_OUT.Person_ID
查询成功显示 4 列 invoice_out
我需要在result1(invoice_in)和result2(invoice_out)之间合并,所以查询的结果有8列。
【问题讨论】:
-
是的,有可能,这实际上是MySQL正在做的并且擅长的。到目前为止你做了什么?
-
到目前为止,我只显示了一个表格,我需要像结果一样组合两个表格。所以我的意思是,连接表(invoice_in)结合(invoice_out),结果更多列(如上面的结果),结果不在行中
-
您的表结构是规范化的,并与 ID 连接。你只需要在上面做一个简单的
SELECT和几个JOIN子句来粘合其余的数据,没什么太难的。 -
是的,使用连接语法,但我只对一张表成功。但是如何像上面的结果一样将join 1的结果组合成结果join 2。
-
@ed.inside 您可以编辑您的问题。最好把代码放在那里,有些人不看cmets。
标签: mysql database select join