IF condition between PHP MySQL tables

1

OPa,

I have two tables: forma_pagamento and forma_pagamento_selecionada .

I have a while where all forms of payment should be listed, so in this while you must have a IF condition where a new column will return me, in case, equal values are found between the two tables, It worked.

SELECT
  *,
  IF(forma_pagamento_selecionado_id = forma_pagamento_id, NULL, 'checked') AS isChecked
FROM 
  forma_pagamento_selecionado
INNER JOIN
  forma_pagamento ON forma_pagamento_id = forma_pagamento_selecionado_id

That is, if forma_pagamento_selecionado_id is equal to forma_pagamento_id , isCheckd will get checked, if it is not equal, it will not receive value.

    
asked by anonymous 28.06.2016 / 05:21

2 answers

3

The way you are relating to INNER JOIN will always return the values where forma_pagamento_id is equal to forma_pagamento_selecionado_id , then if there will be useless besides being declared incorrectly.

Since you want to list all results, equal or not, use LEFT JOIN and IF as follows:

SELECT forma_pagamento_selecionado.*, 
IF(forma_pagamento.ID IS NULL, 'NULL', 'Checked') AS isChecked
FROM forma_pagamento_selecionado
LEFT JOIN forma_pagamento 
ON forma_pagamento.ID = forma_pagamento_selecionado.ID

See working in SQL Fiddle

    
28.06.2016 / 17:42
1

Solved, thanks to the idea of @Marcelo de Andrade

SELECT
      forma_pagamento_id,
      forma_pagamento_nome,
      forma_pagamento_selecionado_id,
      IF(forma_pagamento_selecionado_id IS NULL, 'NULL', '1') AS forma_pagamento_aceita
FROM
    forma_pagamento
LEFT JOIN
     forma_pagamento_selecionado ON forma_pagamento.forma_pagamento_id = forma_pagamento_selecionado.forma_pagamento_selecionado_id 
and
     forma_pagamento_selecionado_id = 1

Vlw

    
29.06.2016 / 19:27