gpt4 book ai didi

mysql - SQL 连接命令以发现最高级别的产品

转载 作者:行者123 更新时间:2023-11-29 01:49:29 25 4
gpt4 key购买 nike

所以基本上我想做的是这个...我的任务是找到拥有“CSM”、“LSP”或“CSD”的人,同时加入表“client_personal”中与“client_no”相匹配的信息来自“CSM”、“LSP”或“CSD”的搜索结果

我确定我正在做所有这些“低音确认词”,但最终目标是显示客户信息,包括表“client_personal”中的其他字段,以便销售人员可以为那些拥有“CSM”但没有“LSP”记录的人做推销或“CSD”(被认为是更高级别)- 不幸的是,有 1:一堆乱七八糟的东西、大量的欺骗和多个条目,以及 2:没有一个更容易使用的数据库可以达到“最高级别”。

       SELECT client_no,product,status,paid_date
FROM client_educational
LEFT JOIN client_personal
ON client_educational.client_no = client_personal.client_no
WHERE product='CSM'
OR product='LSP'
OR product='CSD'

这是我感兴趣的数据库:

    client_educational 

client_no product status pd_date

500000 CSM pd-cert 2018-06-20
500001 CSM pd-cert 2018-06-20
500001 LSP pd-cert 2018-06-20
500002 CSM pd-cert 2018-06-20
500002 LSP pd-cert 2018-06-20
500002 CSD pd-cert 2018-06-20


client_personal

client_no name email phone

500000 John Doe mail@mail.com 555-555-5555
500001 John Shmoe mail@mail.com 555-555-5555
500002 John Howe mail@mail.com 555-555-5555

所以我需要的不仅是合并结果,还需要通过使用“client_no”行作为唯一标识符来仅显示那些只有产品“CSM”而没有“LSP”或“CSD”的产品... .

像这样的……

    client_no           product         status          pd_date         name            email           phone

500000 CSM pd-cert 2018-06-20 John Doe mail@mail.com 555-555-5555

最佳答案

尝试使用 left join

select 
T1.`client_no`,
T2.`product`,
T2.`status`,
T2.`pd_date`,
T1.`name`,
T1.`email`,
T1.`phone`
from client_personal T1
left join client_educational T2 on T1.`client_no` = T2.`client_no`
and T2.`product` = 'CSM'
left join client_educational T3 on T1.`client_no` = T3.`client_no`
and T3.`product` IN('LSP', 'CSD')
where T2.`client_no` is not null
and T3.`client_no` is null

| client_no | product | status | pd_date | name | email | phone |
| 500000 | CSM | pd-cert | 2018-06-20 00:00:00 | John Doe | mail@mail.com | 555-555-5555 |

测试 DDL

CREATE TABLE client_educational 
(`client_no` int, `product` varchar(3), `status` varchar(7), `pd_date` datetime)
;

INSERT INTO client_educational
(`client_no`, `product`, `status`, `pd_date`)
VALUES
(500000, 'CSM', 'pd-cert', '2018-06-20 00:00:00'),
(500001, 'CSM', 'pd-cert', '2018-06-20 00:00:00'),
(500001, 'LSP', 'pd-cert', '2018-06-20 00:00:00'),
(500002, 'CSM', 'pd-cert', '2018-06-20 00:00:00'),
(500002, 'LSP', 'pd-cert', '2018-06-20 00:00:00'),
(500002, 'CSD', 'pd-cert', '2018-06-20 00:00:00')
;

CREATE TABLE client_personal
(`client_no` int, `name` varchar(10), `email` varchar(13), `phone` varchar(12))
;

INSERT INTO client_personal
(`client_no`, `name`, `email`, `phone`)
VALUES
(500000, 'John Doe', 'mail@mail.com', '555-555-5555'),
(500001, 'John Shmoe', 'mail@mail.com', '555-555-5555'),
(500002, 'John Howe', 'mail@mail.com', '555-555-5555')
;

DB Fiddle - TEST DEMO

关于mysql - SQL 连接命令以发现最高级别的产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50960868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com