ПРИСОЕДИНИТЬСЯ с подзапросом - Синтаксические проблемы SQL - PullRequest
0 голосов
/ 27 мая 2018

Я хочу найти наиболее повторяющееся значение в столбце с именем w.toy_id, учитывая, что оно относится к другому столбцу с именем ch.child_id.Вот почему я сделал это внутри JOIN, а не вместо dream_toy, но теперь он дает мне ОШИБКУ: отсутствует запись предложения FROM для таблицы "w" '.

Я новичок в 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

Большое вам спасибо!

1 Ответ

0 голосов
/ 27 мая 2018

Если я просто возьму запрос, вам нужно дать имя подзапросу, отвечающему вашему основному запросу (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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...