Estou tentando mesclar nossos dados de RH. Tive que criar minhas próprias tabelas para dar uma tabela de "regiões"
DROP TABLE
IF EXISTS testgiver.ldap_karen;
CREATE TABLE testgiver.ldap_karen (uid VARCHAR (10) NOT NULL PRIMARY KEY) SELECT
ldap_full.thomsnamedisplay,
ldap_full.uid as 'uid',
ldap_full.businesscategory,
ldap_full.mail,
ldap_full.givenname,
ldap_full.sn,
ldap_full.departmentnumber,
ldap_full.title,
ldap_full.thomsmgdescr,
ldap_full.thomsmgdescroverride,
ldap_full.thomscompanydescr,
ldap_full.thomscompanydescroverride,
ldap_full.thomslocationstreet1,
ldap_full.thomslocationcity,
ldap_full.thomslocationstatedescr,
ldap_full.thomslocationpostal,
ldap_full.thomslocationcountrydescr,
ldap_full.thomssupervisorid,
ldap_full.thomssupervisoriddescr,
ldap_full.thomscompanyshortdescroverride,
ldap_full.thomsbulevel1descr,
ldap_full.thomsbulevel1shortdescr,
ldap_full.thomsbulevel2descr,
ldap_full.thomsbulevel2shortdescr,
ldap_full.thomsroleindicatordescr,
ldap_full.thomsjobcodedescr,
ldap_full.thomsjobfamilycode,
ldap_full.thomsjobfamilydescr,
ldap_full.thomsrecordtypedescr,
sup_email.mail AS supemail,
reports_regionnames.regionname
FROM
ldap_full
LEFT JOIN ldap_full AS sup_email ON ldap_full.thomssupervisorid = sup_email.uid
LEFT JOIN reports_regions ON ldap_full.thomslocationcountrydescr = reports_regions.thomslocationcountrydescr
LEFT JOIN reports_regionnames ON reports_regions.thomsregion1 = reports_regionnames.regiondid
Isso funciona bem e adiciona uma região para cada usuário. No entanto, gostaria de dar um passo adiante. Eu gostaria que ele manuseasse instâncias em que um funcionário não tivesse ldap_full.thomslocationcountrydescr (portanto, nulo) ou se o funcionário ldap_full.thomslocationcountrydescr não estivesse na tabela de pesquisa. Isso parece simples, mas tentei algumas coisas e não acho que minha sintaxe esteja nem perto.
Simplesmente gostaria que a região fosse definida como "ruim" para cada funcionário com um "novo país" ou nenhum país.
Indiscutivelmente, você estaria melhor com o
NULL
desde que é a ausência de um valor, em vez de um texto arbitrário indicando a ausência de um valor válido... mas:A última coluna selecionada será a saída da
CASE
expressão.Quando ldap_full.thomslocationcountrydescr IS NULL, então retornamos uma string... caso contrário, quando não correspondemos à tabela de pesquisa, mas ldap_full.thomslocationcountrydescr não é nulo, retornamos uma string diferente... caso contrário (
ELSE
) retornamos o valor original , de reports_regionnames.regionname.A primeira partida válida vence.
http://dev.mysql.com/doc/refman/5.6/en/control-flow-functions.html