2

私はそのような3つのテーブルを持っています:

User table
user_id     first_name     email
1           Bob            bob@bob.com
2           Jane           jane@jane.com
3           Fred           fred@fred.com

Listing
listing_id  user_id        status
1           1              1
2           1              1
3           2              1
4           3              1

User billing
billing_id  user_id        status
1           1              1
2           2              1

ユーザーテーブルには、すべてのユーザー情報が含まれています。リストテーブルには、オークションリストに関する情報があります。このテーブルのステータス列は、リストがアクティブであるか終了しているかを判別するためのものです。請求テーブルには、ユーザーの請求の詳細に関連する情報が含まれています。

すべてのテーブルは、user_idに基づいて関連付けられています。私が抽出したいのは、ユーザーがアクティブなリストを持っているが、請求の詳細を入力していないすべてのユーザー情報です。したがって、上記の表の例の望ましい結果は次のようになります。

user_id     first_name     email
3           Fred           fred@fred.com

フレッドは現在アクティブなリストを持っていますが、彼の請求情報を記入していません。

どうもありがとう。

4

3 に答える 3

1

あなたはこのような何かを試すことができます。

select * from usertable inner join listing on usertable.user_Id=listing.user_Id 

これを使用して、この両方のテーブルからデータを取得できます。あなたは私のポイントを得ましたか?

于 2013-03-27T03:12:27.880 に答える
0
SELECT u.*
FROM User u
INNER JOIN Listing l USING (user_id)
LEFT OUTER JOIN User_billing b USING (user_id)
WHERE b.user_id IS NULL;
于 2013-03-27T03:03:40.597 に答える
0

試す...

SELECT user.user_id, user.first_name, user.email 
FROM user 
LEFT JOIN listing ON listing.user_id = user.user_id AND listing.status = 1
WHERE user.user_id NOT IN (SELECT user_id FROM billing)

また...

SELECT user.user_id, user.first_name, user.email 
FROM user 
LEFT JOIN listing ON listing.user_id = user.user_id AND listing.status = 1
LEFT JOIN billing ON billing.user_id = user.user_id
WHERE billing.user_id IS NULL

NOT INと実行時間がはるかに高速で、使用するリソースが少ないLEFT JOINと比較して、最初の方法よりも2番目の方法をお勧めします。

于 2013-03-27T03:03:56.560 に答える