1

Google検索だけではわからない問題が少しあります!

現在ログインしているセッション ユーザーを除く、テーブルからすべてのユーザーを返そうとしています。

$stmt = $conn->prepare('SELECT *
    FROM users 
    WHERE user_id <> ? 
    AND credits_offered <= credits_bank');
$stmt->bindParam(1, $uid, PDO::PARAM_INT);
$stmt->execute(); 

別のテーブルuser_friendshipsがありますが、このテーブルには3つの列があります。

id | user_id | user_followed_id

私のクエリでは、ユーザーのいずれかが返された場合、ユーザーの友情テーブルwhereの列に存在し、結果としてそれらを返さないという句を何とか追加したいと思いますが、これは意味がありますか?user_followed_id

どんな助けでも大歓迎です。

4

1 に答える 1

3

を使用する 1 つの方法を次に示しOUTER JOINます。

SELECT DISTINCT u.*
FROM users u
    LEFT JOIN user_friendships uf ON u.user_id = uf.user_followed_id
WHERE u.user_id <> ? 
   AND u.credits_offered <= credits_bank
   AND uf.user_followed_id IS NULL
于 2013-05-31T23:08:12.743 に答える