繁体   English   中英

mysql查询仅在!=“”时询问第二个表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM