sql >> Database >  >> RDS >> Mysql

Een subquery maken op queryresultaten?

Probeer dit:

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

Met uw oorspronkelijke zoekopdracht, heb ik die zoekopdracht als een tabel (a) behandeld en LEFT JOIN het met connections tafel. Dan, LEFT JOIN de connections tabel met de words_en tabel om de gewenste woorden te bereiken. Dit maakt het mogelijk om alle gebruikers te krijgen die terugkeren van uw oorspronkelijke zoekopdracht, zelfs als er geen verbanden/woorden zijn.




  1. varchar vs tekst - MySQL

  2. SQL Server VOOR JSON PATH Voorbeelden (T-SQL)

  3. Maak een complexe query op basis van drie eenvoudige query's

  4. Efficiënte query om een ​​gescheiden kolom in een aparte tabel te splitsen