已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。
5小时前关门了。
Improve this question
我有三个表,分别命名为A、B和C。
表A具有以下模式。(EMAIL,FIRST_NAME,LAST_NAME)
表B具有以下模式。(EMAIL,PRODUCT_NAME,PRODUCT_NUMBER).
表C具有以下模式。(EMAIL,PRODUCT_NAME,PRODUCT_NUMBER).
我试图构造一个SQL查询,可以给予我如下详细信息:
从表A中,获取表B中与表C WHERE中的记录匹配的所有记录的名和姓
B.EMAIL = C.EMAIL and B.PRODUCT_NAME = C.PRODUCT_NAME AND B.PRODUCT_NUMBER = C.PRODUCT_NUMBER
最终表格记录应如下所示,并有一个以“结果”命名的附加列。
(A.FIRST_NAME,A.LAST_NAME,B.PRODUCT_NAME,B.PRODUCT_NUMBER,RESULT)
应根据以下条件确定结果值:
- 如果记录同时出现在表B和表C中(B.电子邮件= C.电子邮件和B.产品名称= C.产品名称和B.产品编号= C.产品编号),则已收到。
- 如果记录出现在表C中,但未出现在表B中(匹配B.email=C.email),则收到。
- 如果记录出现在表B中,但未出现在表C中(匹配B.email=C.email),则未收到。
有谁能建议一种构造这个查询的方法吗?我对sql相当陌生。
我尝试了下面的查询,但我没有得到它的权利.
SELECT DISTINCT
B.PRODUCT_NAME,B.PRODUCT_NUMBER,A.FIRST_NAME,A.LAST_NAME,
'Received' as RESULT
FROM B
INNER JOIN C on B.EMAIL = C.EMAIL
and B.PRODUCT_NAME = C.PRODUCT_NAME
and B.PRODUCT_NUMBER = C.PRODUCT_NUMBER WHERE A.EMAIL = C.EMAIL
UNION
(SELECT DISTINCT
B.PRODUCT_NAME,B.PRODUCT_NUMBER,A.FIRST_NAME,A.LAST_NAME,
'NOT Received' as RESULT
FROM B
INNER JOIN C
on B.EMAIL = C.EMAIL and B.PRODUCT_NAME != C.PRODUCT_NAME
and B.PRODUCT_NUMBER != C.PRODUCT_NUMBER WHERE A.EMAIL = C.EMAIL)
1条答案
按热度按时间nukf8bse1#
您要查找的查询如下所示: