我想請求幫助提供兩個表中的值的SQL請求。根據連接表內的其他值選擇值SQL
作爲一個例子,我有一個Table orders和一個表格處理。
我想報告訂單和處理狀態。
table orders
id | status | div
-------------------
1 | wating_r | div1
2 | closed | div2
3 | closed | div3
-
table processing:
id | order_id | type | date
----------------------------------------
1 | 2 | send_request | 15.01.15
2 | 2 | send_invoice | 30.01.15
3 | 1 | send_request | 01.02.15
4 | 3 | send_request2 | 10.02.15
5 | 3 | send_invoice | 15.02.15
我想得到什麼:
order_id | status | date_request | date_request2 | date_invoice
--------------------------------------------------------------------------------
1 | waiting_r | 01.02.15 | NULL | NULL
2 | closed | 15.01.15 | NULL | 30.01.15
3 | closed | NULL | 10.02.15 | 15.02.15
我的解決方案:
select orders.id as order_id, orders.status, IF(processing.type='send_invoice',date_format(processing.date, '%Y-%m-%d'), NULL) as date_invoice, IF(processing.type='send_request',date_format(processing.date, '%Y-%m-%d'), NULL) as date_request, IF(processing.type='send_request2',date_format(processing.date, '%Y-%m-%d'), NULL) as date_request2
from orders inner join processing on orders.id = processing.order_id
where case when orders.status='closed' then processing.type='send_invoice' when orders.status='waiting_r' then processing.type='send_request' when orders.status='waiting_2'then processing.type='send_request2' end
這工作得很好,但這個IF語句我不會成爲從請求日期時,發票被送往 - 我只得到發票的日期。
而不是案件請求,我嘗試了以下,但在這種情況下,我爲每個訂單有多個行。當我嘗試「分組」時,我混合了數據。
where processing.type in ('send_invoice', 'send_request', 'completion_request_send')
你試過嵌套嗎? (即。** SELECT div div FROM orders WHERE id IN(SELECT order_id FROM processing WHERE type ='send_request')**)然後加入結果? – NemanjaT
還沒有testet,謝謝你 – KillVirus