Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Igorlorosae

Delete INNER JOIN

Recommended Posts

Olá,

estou deletando vários registros em várias tabelas (4 pra ser mais especifico) usando INNER JOIN.

Segue o código:

$smtp = $pdo->prepare('DELETE imob_clientes.*,imob_imoveis.*, imob_mailcliente.*, imob_tickets.* FROM imob_clientes
INNER JOIN imob_imoveis ON imob_clientes.clienteId = imob_imoveis.clienteId
INNER JOIN imob_mailcliente ON imob_clientes.clienteId = imob_mailcliente.clienteId
INNER JOIN imob_tickets ON imob_clientes.clienteId = imob_tickets.clienteId
WHERE imob_imoveis.clienteId = :clienteId AND
imob_mailcliente.clienteId = :clienteId AND
imob_tickets.clienteId = :clienteId');

O problema é que se as tabelas estiverem com os campos preenchidos, tudo bem. Mas se alguma dessas tabelas estiver vazia, o sistema não deleta o cliente.

Alguém pode me ajudar?

Desde já, obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado Rafael! Deu certo, ficou assim:

 

$smtp = $pdo->prepare('DELETE imob_clientes.*,imob_imoveis.*, imob_mailcliente.*, imob_tickets.* FROM imob_clientes
LEFT OUTER JOIN imob_imoveis ON imob_clientes.clienteId = imob_imoveis.clienteId
LEFT OUTER JOIN imob_mailcliente ON imob_clientes.clienteId = imob_mailcliente.clienteId
LEFT OUTER JOIN imob_tickets ON imob_clientes.clienteId = imob_tickets.clienteId
WHERE (imob_clientes.clienteId = :clienteId) AND
(imob_imoveis.clienteId = :clienteId OR imob_imoveis.clienteId IS NULL) AND
(imob_mailcliente.clienteId = :clienteId OR imob_mailcliente.clienteId IS NULL) AND
(imob_tickets.clienteId = :clienteId OR imob_tickets.clienteId IS NULL)');

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.