Estou com a seguinte query abaixo.
Ela faz consulta na tabela de pedidos.
O problema é que o pedido pode ser feito na forma de cartão e boleto (tem tabelas distintas para isso).
Preciso pegar os status na tabela especifica, ou seja, se o cliente comprou com cartao, eu preciso ir na tabela de cartão e ver o status da transacao. Mesma coisa para o boleto ... compreenderam?
Pensei então em usar um CASE, nada melhor né !? xD
Problema que não está funcionando meu subselect no case ;x
O case permite subquery?
SELECT p.im_id_pedido, p.im_id_cli_pedido, p.im_id_prod_pedido, p.im_id_forma_pedido, p.im_valor_pedido, p.im_qtde_pedido, p.im_status_pedido, p.im_dt_pedido, CASE p.im_id_forma_pedido WHEN '1' /* cartao visa */ THEN 'cartao' /*(SELECT c.im_status_cartao_cliente FROM `im_cartao_cliente` c WHERE c.im_id_pedido_cartao_cliente = p.im_id_pedido)*/ WHEN '2' /* boleto */ THEN 'boleto' /* (SELECT b.im_status_boleto_cliente FROM `im_boleto_cliente` b WHERE b.im_id_pedido_boleto_cliente = p.im_id_pedido)*/ END AS status_forma_pgto FROM `im_pedido` p INNER JOIN `im_clientes` c ON (p.im_id_cli_pedido = c.im_id_cli); /*WHERE p.im_dt_pedido BETWEEN (1184554800) AND (1184641199); linha comentada para pegar mais resultados*/
Quando eu comendo a subquery me devolve 40 linhas (tudo que a tabela contem), se eu passar a subquery me traz 29 linhas '
eu acho que o problema é quando ele não acha mais registros ele simplesmente dá um stop O.o
(a tabela cartao não tem resultados nela, ou seja vai retortornar NULL na subquery)
Na teoria era pra retornar as 40 linhas, as linhas que ele nao achasse na subquery era pra retornar NULL... mas não está acontecendo isso.
Alguma idéia?