我有两个表,名为 t_header 和 t_detail。
此数据 header
ID | doc_num | promotion
1 0001 0
2 0002 1
此数据详细信息
ID | doc_num | item | price
1 0001 2 100
2 0001 3 170
3 0001 4 102
4 0001 5 105
5 0002 3 120
6 0002 4 99
7 0002 7 165
如果promo = 1,那么详细价格将采取详细数据促销价格,对于上表如果该项目= 3那么将采取价格= 120,因为doc_num 002 promo = 1的项目,如果没有促销它将采用价格 docnum 001、001 num doc 标准价格,并按项目分组
输出
ID | doc_num | item | price | promotion
1 0001 2 100 0
5 0002 3 120 1
6 0002 4 99 1
4 0001 5 105 0
7 0002 7 165 0
最佳答案
我想您需要选择促销价格(如果有),否则您需要正常价格。因此,您应该在 LEFT JOIN 之后使用 IF 语句选择列。 这个查询可能有帮助:
SELECT
if(td_prom.ID, td_prom.ID, td_norm.ID) as ID,
th.doc_num,
if(td_prom.price, td_prom.price, td_norm.price) as price,
if(td_prom.item, td_prom.item, td_norm.item) as item,
th.promo
FROM
t_header th
LEFT JOIN t_detail as td_norm ON th.doc_num = td_norm.doc_num AND th.promo = 0
LEFT JOIN t_detail as td_prom ON th.doc_num = td_prom.doc_num AND th.promo = 1
GROUP BY item
关于php - 选择数据标题加入详细信息最后一个 doc_num 标题是否升级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43087408/