I'estou trabalhando com uma pequena complicação de exibição aqui. I'tenho a certeza que existe'é uma capacidade IF/ELSE I'estou apenas a ignorar.
Eu tenho 2 tabelas I'm consultando (clientes, endereços). A primeira tem o registro principal, mas a segunda pode ou não ter um registro para LEFT JOINAR à esquerda.
Eu quero exibir um zero se não houver nenhum registro na tabela de endereços. E eu só quero exibir 1, se houver um registro.
O que eu'já tentei até agora:
SELECT c.name, COALESCE(a.addressid,0) AS addressexists
FROM customers c
LEFT JOIN addresses a ON c.customerid = a.customerid
WHERE customerid = 123
Este primeiro exemplo não o faz. Mas posso estar a utilizar mal a COALESCE.
Como posso exibir um 0, se nulo, e um 1, se algo existe?
Ao invés de COALESCE(a.addressid,0) AS addressexists', utilize
CASE':
CASE WHEN a.addressid IS NOT NULL
THEN 1
ELSE 0
END AS addressexists
ou o mais simples:
(a.addressid IS NOT NULL) AS addressexists
Isso funciona porque TRUE
é mostrado como 1
no MySQL e FALSE
como 0
.