这个语句如何用关联的方法写出来。还可以如何改能实现和这个语句一样的查询结果
这个语句怎么用关联的方法写出来。还可以怎么改能实现和这个语句一样的查询结果。
select a.dish_name, nvl(comments.sl, 0) pinglun
from (select dish_name, dish_id from jw_dish) a
left join (select a.dish_id, count(b.comment_heart) sl
from jw_order_arch a, jw_comment b
where b.single_order_id = a.single_order_id
group by a.dish_id) comments
on comments.dish_id = a.dish_id
------解决方案--------------------
------解决方案--------------------
左连接 应该就这两种了left join on ,(+)
------解决方案--------------------
要么你就改为子查询:
select a.dish_name, nvl(comments.sl, 0) pinglun
from (select dish_name, dish_id from jw_dish) a
left join (select a.dish_id, count(b.comment_heart) sl
from jw_order_arch a, jw_comment b
where b.single_order_id = a.single_order_id
group by a.dish_id) comments
on comments.dish_id = a.dish_id
------解决方案--------------------
SELECT A.DISH_NAME, NVL(COMMENTS.SL, 0) PINGLUN
FROM (SELECT DISH_NAME, DISH_ID FROM JW_DISH) A,
(SELECT A.DISH_ID, COUNT(B.COMMENT_HEART) SL
FROM JW_ORDER_ARCH A, JW_COMMENT B
WHERE B.SINGLE_ORDER_ID = A.SINGLE_ORDER_ID
GROUP BY A.DISH_ID) COMMENTS
WHERE COMMENTS.DISH_ID = A.DISH_ID(+)
------解决方案--------------------
左连接 应该就这两种了left join on ,(+)
------解决方案--------------------
要么你就改为子查询:
select a.dish_name,
(select nvl(comments.sl, 0)
from (select a.dish_id, count(b.comment_heart) sl
from jw_order_arch a, jw_comment b
where b.single_order_id = a.single_order_id
group by a.dish_id) comments
where comments.dish_id = a.dish_id) pinglun
from (select dish_name, dish_id from jw_dish) a