列出独特的卖家和买家

时间:2016-05-02 11:53:25

标签: sql

我有这些表

Customer (Customer_ID(PK), Joined_date, FirstName, LastName, Location) 
Seller (Seller_ID, Customer_ID(Fk)) and Buyer(Buyer_ID, Customer_ID(FK))

我只需要展示2016年1月1日之后加入的买家和卖家,并且该人不应该两次出售物品并购买物品。

SELECT * FROM 
(
    SELECT BUYER_FirstName, BUYER_LastName, SELLER_ID 
    FROM BUYER AS BUY 
    UNION 
    SELECT SELLER_FirstNAME,Seller_LastName, BUYER_ID 
    FROM SELLER AS SELL
) WHERE JOINED_DATE > TO_DATE('01-01-2016', 'MM-DD-YYYY') 
ORDER BY JOINED_DATE;
我正走在正确的轨道上吗?实际上我必须在概念上基于ER Diagram运行这些查询。

1 个答案:

答案 0 :(得分:1)

你可能会扭曲你的方法来得到答案。但是,我更倾向于从客户表开始(假设买卖双方都是客户)。

select c.*
from customers c
where c.join_date >= '2016-01-01' and
      exists (select 1 from buyers b where b.customer_id = c.customer_id) and
      exists (select 1 from sellers s where s.customer_id = c.customer_id);

注意:在Oracle中,您需要将date放在日期常量之前。

这样就重新提出了这样一个问题,即让自今年第一年起加入的客户同时进行购买和销售。