[英]mysql query ask 2nd table only if !=“”
我有一个桌子的顾客:
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先生尊敬的Peter Pan博士或
克劳福特夫人亲爱的克劳福特夫人
或Amazon Dear先生或女士,
提到的查询为空。 任何想法? 谢谢! 海啸
您需要在select
子句中使用left join
和一些逻辑:
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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.