sql >> Databasteknik >  >> RDS >> Mysql

Göra en underfråga på frågeresultat?

Prova detta:

SELECT a.name_surname,GROUP_CONCAT(Distinct w.word Order by w.word asc) AS words
FROM (
  SELECT f1.asked_user_id AS friend_id,
       f1.created,
       u.name_surname,
       u.avatar
  FROM friends AS f1 
  INNER JOIN friends AS f2 ON f1.asked_user_id = f2.asker_user_id
  INNER JOIN users AS u ON f1.asked_user_id = u.id
       AND f1.asker_user_id = f2.asked_user_id
       AND f1.asker_user_id = 1
  WHERE f1.status = 1 AND f2.status = 1
) a
LEFT JOIN connections c ON c.user_id = a.friend_id 
LEFT JOIN words_en w ON c.word_id = w.id
GROUP BY 1;

sqlfiddle-demo

Med din ursprungliga fråga, vad jag gjorde var att behandla den frågan som en tabell (a) och LEFT JOIN den med connections tabell. Sedan LEFT JOIN connections tabell med words_en tabell för att nå önskade ord. Detta gör det möjligt att få alla användare som returnerar från din ursprungliga fråga, även när det inte finns några kopplingar/ord.




  1. Namngiven Query, Native Query eller Criteria API

  2. TDS Server - Använd Transact-SQL (T-SQL)-uttalanden för att arbeta med Salesforce-data i SQL Server

  3. cakephp lägger till post med vissa parametrar fixade

  4. Hur visar jag ett fälts dolda tecken i resultatet av en fråga i Oracle?