CASE查询从不同表获取结果[重复]

问题描述 投票:0回答:1

我正在从事餐厅项目。餐厅接受网上订单和“餐厅”订单

我需要通过 1 个查询打印出所有活动订单。当我需要将在线订单与特定客户关联时,问题就出现了。对于“餐厅内”订单,我不需要将订单与 customer_id 关联,但我需要将 table_id 与其名称关联。 我的数据库看起来像:

客户

id 客户名称
10 约翰
11 彼得

桌子

id 表名
1 表1
2 表2

订单

id 表_id 客户 ID
1 0 10
2 1 0
3 2 0

我的查询是:

SELECT t.id, o.id as oid, (
    CASE WHEN t.id > 0 THEN 
        t.table_name
    ELSE 
        c.customer_names
    END
) AS table_name 
FROM tables t, orders o, customers c
WHERE o.table_id = t.id
GROUP BY o.id order by o.id asc;

我想要实现的是,当 o.table_id > 0 时,我需要查看 t.table_name,否则订单将用于交付,我应该看到 customer_names 而不是 table_name

我该怎么做? 感谢您的宝贵时间!

mysql case
1个回答
0
投票

参见示例

select id
  ,table_id
  ,(select min(table_name) table_name from tables t where o.table_id=t.id) table_name
  ,customer_id
  ,(select min(customer_names) customer_name from customers c 
     where o.customer_id=c.id) customer_name
from orders o
id 表_id 表名 客户 ID 客户名称
1 0 10 约翰
2 1 表1 0
3 2 表2 0
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.