Mysql
 sql >> база данни >  >> RDS >> Mysql

Създаване на подзаявка за резултатите от заявката?

Опитайте това:

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

Имайки вашата оригинална заявка, това, което направих, е да третирам тази заявка като таблица (a) и LEFT JOIN то с connections маса. След това LEFT JOIN connections таблица с words_en таблица, за да достигнете до желаните думи. Това прави възможно да получите всички потребители, които се връщат от първоначалната ви заявка, дори когато няма връзки/думи.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Грешка в Mysql:Потребителят, посочен като дефинер ('mysql.infoschema'@'localhost'), не съществува', когато се опитва да изхвърли пространства за таблици

  2. Изявленията SELECT имат различен брой колони

  3. MySQL - сортиране на разделен със запетая низ в колона

  4. как да напиша тази заявка за самостоятелно присъединяване в mysql

  5. Какво е името на специфичното за SQL език за програмиране на MySQL?