我正在从事餐厅项目。餐厅接受网上订单和“餐厅”订单
我需要通过 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
我该怎么做? 感谢您的宝贵时间!
参见示例
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 | 空 |