我如何联合这两个?
此查询:
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_ids,word_ids可用于从words_en获取实际的单词。 最后,我想从users表中获取用户name_surname。
答案 0 :(得分:1)
试试这个:
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;
拥有原始查询后,我所做的就是将该查询视为表(a),将LEFT JOIN
视为connections
表。然后,LEFT JOIN
connections
表格与words_en
表格,以达到所需的字词。这样就可以让所有从原始查询返回的用户即使没有连接/单词也可以。