Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Robisz podzapytanie dotyczące wyników zapytania?

Spróbuj tego:

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;

demonstracja sqlfiddle

Mając twoje oryginalne zapytanie, potraktowałem je jako tabelę (a) i LEFT JOIN to z connections stół. Następnie LEFT JOIN connections tabela z words_en tabeli, aby dotrzeć do żądanych słów. Dzięki temu można uzyskać wszystkich użytkowników, którzy wracają z pierwotnego zapytania, nawet jeśli nie ma połączeń/słów.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zmiana tytułu kolumny SQL za pomocą zapytania

  2. Wydajna metoda jednorazowego wyświetlania tytułu grupy — PHP/MySQL/jQuery

  3. MySQL - Jak sumować czasy?

  4. pobieraj 3 wiersze każdego dnia, jeśli planujesz na 1 rok

  5. Chcę, aby tabela mysql obsługiwała dwa języki