【发布时间】:2016-04-11 07:12:55
【问题描述】:
我想修改以下查询,以便它从 S_ID 所指的表(称为 STORES)中获取相应 NAME 列的值,而不是 ORDER.S_ID 列。
但是,在某些情况下,S_ID 为空,在这种情况下没有对应的名称列。在这种情况下,ORDER 和 ORDERLIST 表中仍有我想要 COUNT(*)-ed 并因此由查询显示的记录,因此结果集的第二列为空
SELECT
COUNT(*), ORDER.S_ID
FROM
ORDER, ORDERLIST
WHERE
ORDERLIST.O_ID = ORDER.ID AND
ORDER.DATE = '13-APR. -09 19.42.05,259000000'
GROUP BY S_ID;
样本数据:
订单表
ID DATE S_ID
----------------------------------------
1 11-APR. -09 19.41.39,187000000 null
2 12-APR. -09 19.42.05,259000000 null
3 13-APR. -09 19.42.41,688000000 null
11 16-APR. -09 22.06.11,169000000 3
ORDERLIST 表
O_ID B_ID PRICE
---------------------
3 6 7999
2 2 2000
2 6 7999
1 5 5000
1 1 1000
11 4 4000
11 6 7999
STORES 表
ID NAME
----------
1 Store1
2 Store2
3 Store3
如果用户查询 S_ID 值不为空的日期,我希望看到返回的内容:(此特定情况是查询日期 16-APR.-09 22.06.11,169000000 时)
COUNT(*) STORENAME
2 Store3
如果它为空,我想要返回的内容: (查询日期 13-APR.-09 19.42.41,688000000)
COUNT(*) STORENAME
1 null
【问题讨论】: