sql >> Databáze >  >> RDS >> Mysql

Vytvořit dílčí dotaz na výsledky dotazu?

Zkuste toto:

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;

ukázka sqlfiddle

S vaším původním dotazem jsem s ním zacházel jako s tabulkou (a) a LEFT JOIN s connections stůl. Poté LEFT JOIN connections tabulka s words_en tabulky, abyste dosáhli požadovaných slov. To umožňuje získat všechny uživatele, kteří se vrátí z vašeho původního dotazu, i když neexistují žádná spojení/slova.




  1. Jak používáte proměnné skriptu v psql?

  2. Regex, abyste zjistili, zda je číslo v rozsahu, například 1,3,10-15,17

  3. Chyba zřetězení MySQL a nelegální kombinace porovnávání

  4. Django Query Natural Sort