簡體   English   中英

對查詢結果進行子查詢?

[英]Making a sub-query on query results?

我如何結合這兩個?

該查詢:

SELECT f1.asked_user_id AS friend_id
    FROM friends AS f1 JOIN friends AS f2
    ON f1.asked_user_id = f2.asker_user_id
    AND f1.asker_user_id = f2.asked_user_id
    AND f1.asker_user_id = :user_id
WHERE f1.status = 1 AND f2.status = 1

附:

(SELECT GROUP_CONCAT(words_en.word) FROM connections JOIN words_en ON connections.word_id = words_en.id WHERE connections.user_id = friends.friend_id) As friend_words

並再次加入:

JOIN users ON friends.friend_id = users.id

我在這里嘗試了幾件事: http : //www.sqlfiddle.com/#!2/ 85d6d/ 36

第一個查詢從表中選擇兩個方式的朋友。 我從該查詢中獲得friend_id。 現在,我想了解更多關於這個friend_id的信息。 因此,我想使用此ID進行另一個查詢,該查詢將顯示該用戶來自連接表的所有word_id,word_ids可用於從words_en獲取實際單詞。 最后,我想從用戶表中獲取用戶名。

嘗試這個:

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),並使用connections表將其LEFT JOIN 然后,將LEFT JOIN connections表與words_en表連接到所需的單詞。 這樣,即使沒有連接/單詞,也可以獲得從原始查詢返回的所有用戶。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM