我有一个表客户:
id, firstname, lastname, companyname,title_id,salutation_id
1,Peter,Pan,1,1
2,Cindy,Crawfort,Tinysoft,0,1
3,,,Amaton,,,
..
和表格标题
id, name
1. Dr.
2. Dr. Prof.
...
和表格称呼
id name
1, Mrs.
2,Mr.
3,none
我想做的是,如果它不是空的话,我会做出一个给我正确称呼的查询。 我试过了:
select *
from customers
where if(customer.name!="",customer.title_id=titles.id) and
if(customer.name!="",customer.salutation_id=salutations.id) ;
这意味着在标题中应该是正确的名称(如果存在)。但有时候,像亚马逊一样,你没有名字,只有公司名称才能加入。在这种情况下,公司名称应该只被推出。
输出应如下所示: 彼得潘先生 亲爱的Peter Pan博士或
MRS。 Crawfort 亲爱的克劳福夫人
或 亚马逊 亲爱的先生们或者女士们,
上述查询为空。任何的想法?谢谢! 海啸
答案 0 :(得分:1)
您需要在left join
子句中使用select
和一些逻辑:
select c.*,
(case when s.id is not null and s.id <> '' then s.name
else t.name
end) as CorrectSalutation
from customers c left join
title t
on c.title_id = t.id left join
salutation s
on c.salutation_id = s.id;