Peguei o sistema de um cliente em que as tableas (esquema da imagem) precisavam ser consultadas juntamente, mas diferente do convencional, elas represemtam módulos que possuem colunas semelhantes, e que deveriam ser exibidas simultaneamente…
A primeira solução foi fazer um LEFT JOIN:
SELECT de.fase,
bc.id, de.id, gr.id,
bct.parcela, det.parcela, grt.parcela,
bct.valor, det.valor, grt.valor,
bct.vencimento, det.vencimento, grt.vencimento,
bct.dt_pagamento, det.dt_pagamento, grt.dt_pagamento,
bct.valor_pago, det.valor_pago, grt.valor_pago,
bct.pagamento, det.pagamento, grt.pagamento
FROM crm_laravel.students AS st
LEFT JOIN crm_laravel.bank_cheques AS bc
ON ( st.id = bc.student_id )
LEFT JOIN crm_laravel.bank_cheque_tradings AS bct
ON ( bc.id = bct.bank_cheque_id )
LEFT JOIN crm_laravel.defaultings AS de
ON ( st.id = de.student_id )
LEFT JOIN crm_laravel.defaulting_tradings AS det
ON ( de.id = det.defaulting_id )
LEFT JOIN crm_laravel.graphics AS gr
ON ( st.id = gr.student_id )
LEFT JOIN crm_laravel.graphic_tradings AS grt
ON ( gr.id = grt.graphic_id )
WHERE 1
ORDER BY st.name ASC
LIMIT 100;
Como podemos ver na imagem 02, além do resultado da consulta ficar sobrecarregado com tantas colunas, ela traz resultados em branco, devido ao LEFT JOIN, pois se aplicar uma condição para não trazer valor NULL, ela não traz as outras que tenham algum resultado, já que fazem parte do mesmo SELECT. O mesmo se aplica a qualquer condição que eu coloque após o parâmetro WHERE.
Foi aí que resolvi testar as condições IF and ELSE:
Usando IF e ELSE Statement no MySQL
12 de April de 2021
MySQL
No Comments
adrianoApi
Peguei o sistema de um cliente em que as tableas (esquema da imagem) precisavam ser consultadas juntamente, mas diferente do convencional, elas represemtam módulos que possuem colunas semelhantes, e que deveriam ser exibidas simultaneamente…
A primeira solução foi fazer um LEFT JOIN:
Como podemos ver na imagem 02, além do resultado da consulta ficar sobrecarregado com tantas colunas, ela traz resultados em branco, devido ao LEFT JOIN, pois se aplicar uma condição para não trazer valor NULL, ela não traz as outras que tenham algum resultado, já que fazem parte do mesmo SELECT. O mesmo se aplica a qualquer condição que eu coloque após o parâmetro WHERE.
Foi aí que resolvi testar as condições IF and ELSE:
Fonte: https://www.w3schools.com/sql/func_mysql_if.asp
Enfim essa foi a solução dos meus problemas, deixando o código mais rápido, legível e eficaz:
E a imagem 03 é o resultado final!
Também pude usufruir do mesmo esquema de consulta para formatar os valores da tabela students conforme a soliciação do cliente:
(งツ)ว