我希望在名为w.toy_id的列中找到最重复的值,因为它与另一个名为ch.child_id的列相关。 这就是为什么我在JOIN中而不是在dream_toy的地方进行的,但现在它给了我错误:缺少FROM-clause条目表&#34; w&#34;&#39;。< / p>
我是SQL的新手,所以如果这是一个愚蠢的问题我道歉,但我已经持续了好几个小时了,我很绝望。
任何人都可以帮助我?
FOR setof IN
SELECT ch.child_id,ch.child_name, ch.city
,SUM(l.number_toys)
,COUNT (l.letter_id)
,MAX(l.number_toys),
,dream_toy
FROM (CHILD ch LEFT JOIN LETTER l ON ch.child_id=l.child_id)
LEFT JOIN (SELECT w.toy_id
FROM WISHED_TOY w
GROUP BY w.toy_id
ORDER BY COUNT(w.toy_id)
LIMIT 1) dream_toy ON (w.letter_id=l.letter_id)
GROUP BY ch.child_id
ORDER BY -SUM(l.number_toys) ASC, ch.child_name ASC
LIMIT 10
LOOP
RETURN NEXT setof;
END LOOP
非常感谢你!
答案 0 :(得分:0)
如果我只是接受查询,你需要命名提供主查询(l1)的子查询,并且你需要在你的连接中使用“dream_toy”,因为这就是你如何命名它。我只做了一些需要做的改变,但你会明白这一点。
SELECT ch.child_id,ch.child_name, ch.city
,SUM(l.number_toys)
,COUNT (l.letter_id)
,MAX(l.number_toys),
,dream_toy
FROM (CHILD ch LEFT JOIN LETTER l ON ch.child_id=l.child_id) as l1
LEFT JOIN (SELECT w.toy_id
FROM WISHED_TOY w
GROUP BY w.toy_id
ORDER BY COUNT(w.toy_id)
LIMIT 1) dream_toy ON (dream_toy.letter_id=l1.letter_id)
GROUP BY ch.child_id
ORDER BY -SUM(l.number_toys) ASC, ch.child_name ASC
LIMIT 10