我正在进行项目管理,并有三个表可供使用: 项目,任务和 ProjectTypeLookup 。
ProjectTypeLookup 的内容如下所示:
Keyword ProjectType
*-TVC* TVC
*-OTV* OTV
*-KV* KV
任务的内容如下:
projectid projectname taskname
1 Sprite Summer 2016 -TVC(2nd) PRE-LINK TEST (1ST ROUND)
2 MM CNY 2017 -KV SHOOTING
3 Sprite Revive 2017 STAGE 2 - CAMPAIGN IDEA
4 Sprite Summer 2016 -OTV CHECK STORY BOARD WITH LEGAL, PAC & SRA
SQL代码就像
SELECT
t.projectname,
t.taskname,
p.p_status,
(SELECT pt.projecttype
FROM projecttypelookup AS pt
WHERE t.projectname LIKE pt.keyword) AS ProjectType
FROM project AS p,
task AS t
WHERE t.projectid = p.projectid
基本上我希望程序根据存储在 ProjectTypeLookup 表中的预设规则自动生成 ProjectType 字段(TVC或KV或OVT)。
例如,如果项目名称为Sprite Summer 2016 -TVC
,匹配*-TVC*
,则项目类型应为TVC
。
由于并非所有项目名称都能匹配规则,并且不匹配的名称在 ProjectType 字段中应该为空值,因此我使用了子查询。
但是效果不好。我只在 ProjectType 字段中看到" TVC"没有KV,没有OTV ....其他项目名称都有空的ProjectType字段,比如
projectname projecttype
Sprite Summer 2016 -TVC(2nd) TVC
MM CNY 2017 -KV
Sprite Revive 2017
Sprite Summer 2016 -OTV
Coke Summer 2016 -TVC TVC
实际上我也可以做LEFT JOIN,但我不知道如何将它与FROM WHERE结构相结合....