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

因为 Fred 目前有一个活跃的列表,但尚未填写他的帐单信息。

非常感谢。

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

Try...

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)

or...

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

I recommend the second method over the first simply because of the NOT IN and the execution time vs a LEFT JOIN which is much faster and uses less resources

于 2013-03-27T03:03:56.560 回答