1

まず、このようなばかげた質問をして申し訳ありません。私はSQLが初めてです。インターネットから基本的なことを学びましたが、これを理解することはできません。

人々の投稿を保存する post という名前のテーブルがあるとしましょう。テーブル構成はこんな感じ。

Post_id  | poster_id | text
1        | 12        | "hello this is a post"
2        | 15        | "Another post"
3        | 77        | "More counting"

「Friends」という名前のテーブルがあり、誰の友達が誰であるかを保存します。テーブル構成はこんな感じ。

user_one  |  user_two
1         |  88
84        |  33
1         |  66

これで、このような SQL を使用して投稿から投稿を取得できます

SELECT * FROM POST INNER JOIN frnends ON user_one = poster_id WHERE 1

しかし、これは2つのテーブルを結合することでテーブルを取得します。このようなロジックを実行できませんか?

SELECT post FROM post WHERE poster_id = (SELECT user_two,user_one FROM friends WHERE user_one = MY_id OR user_two = MY_id

おそらく MY_id は変数 WHERE MY_id = 1 です

今、この種のロジックを行うには?

どんな助けもとても素晴らしいでしょう。

4

2 に答える 2

1

申し訳ありませんが、コメントする評判がありません。My_id の投稿が返されないように、Gamal のソリューションを改良する必要があります。

SELECT *
FROM post p
INNER JOIN friends AS f on p.poster_id IN (f.user_one, f.user_two)
WHERE My_id IN (f.user_one, f.user_two)
AND p.poster<>My_id;

または、それらの投稿も必要な場合。

SELECT *
FROM post p
INNER JOIN friends AS f on p.poster_id IN (f.user_one, f.user_two)
WHERE My_id IN (f.user_one, f.user_two)
AND p.poster<>My_id
UNION
SELECT *, My_id AS user_one, NULL AS user_two
FROM post p
WHERE p.poster=My_id;

問題は、Gamals の提案が、My_id が含まれる関係ごとに、My_id ごとに各投稿を 1 回返すことです。

于 2013-08-19T11:10:37.190 に答える