2014-09-27 76 views
0

我有一个表的客户:MySQL查询问第二个表= “”

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) ; 

这意味着在一个头,如果存在,应该是正确的名称。但有时候,像亚马逊,你没有名字,只是公司的名字。在这种情况下,公司名称只应该放弃。

的输出应该是这样的: 小飞侠 亲爱的彼得·潘先生博士或

Crawfort 亲爱的太太太太Crawfort

或 亚马逊 尊敬的先生们或老鸨,

提到的查询是空的。任何想法?谢谢! 海啸

回答

1

您需要使用left joinselect子句中的一些逻辑:

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;