php - 选择数据标题加入详细信息最后一个 doc_num 标题是否升级?

标签 php mysql sql

我有两个表,名为 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/

相关文章:

mysql - sql 3表联合

php - Insert on duplicate key update 始终更新所有值

sql - 使用 SSIS 将递归层次结构展平为维度

php - 从多个表中获取数据到单行同时

php - 无法找到 if/else 函数的精确值

mysql - mysql的for循环替代方案

mysql - 我应该如何将 LoopBack Framework 应用程序连接到预先存在的/数据填充的 MySQL 数据库/数据源?

php - SQL SELECT 仅具有来自两个不同表的列的 MAX 值的行

php - 在时事通讯退订链接中使用 UUID 是否足够安全?

php - 本地化 html 文档(事后)