我需要跟踪销售人员及其步骤。我有两张表Prospects and Activity。
这是SQL: Sql在这里小提琴:http://sqlfiddle.com/#!2/413e1c
CREATE TABLE `Prospects` (
`ID` INT NOT NULL AUTO_INCREMENT ,
`Name` VARCHAR(45) NULL ,
PRIMARY KEY (`ID`) );
INSERT INTO `Prospects` (`Name`) VALUES ('Tom');
INSERT INTO `Prospects` (`Name`) VALUES ('Dick');
INSERT INTO `Prospects` (`Name`) VALUES ('Harry');
INSERT INTO `Prospects` (`Name`) VALUES ('Oscar');
CREATE TABLE `Activity` (
`ID` INT NOT NULL AUTO_INCREMENT,
`Prospect_ID` INT NULL ,
`Active` VARCHAR(45) NULL ,
`Step` VARCHAR(45) NULL ,
PRIMARY KEY (`ID`) );
INSERT INTO `Activity` (`Prospect_ID`, `Active`, `Step`) VALUES ('1', 'Yes', 'Call');
INSERT INTO `Activity` (`Prospect_ID`, `Active`, `Step`) VALUES ('1', 'No', 'Mail');
INSERT INTO `Activity` (`Prospect_ID`, `Active`, `Step`) VALUES ('2', 'No', 'Call');
INSERT INTO `Activity` (`Prospect_ID`, `Active`, `Step`) VALUES ('3', 'Yes', 'Mail');
我正在寻找的是每个潜在客户的开放活动。如果Active = No,则应排除它。
ID Prospect Status
1 Tom Call
2 Dick -None-
3 Harry Mail
4 Oscar -None-
我坚持两点
1.没有记录数据。
2.搜索我的相关文件。
よろしくお愿い!
答案 0 :(得分:1)
您应该能够使用LEFT JOIN获取结果,并将Active = 'yes'
的过滤器放在JOIN而不是WHERE子句中。然后,您可以使用COALESCE替换null
值:
select p.id, p.name,
coalesce(a.step, '-None-') Status
from prospects p
left join activity a
on p.id = a.prospect_id
and a.active = 'Yes';