Eragon 0 Denunciar post Postado Junho 24, 2011 Boa tarde esse select funciona perfeito SELECT A.*, B.nome, B.email, B.fone, C.uf, C.cidade, D.loja FROM pedidos A LEFT JOIN usuarios B ON A.id_usuario = B.id LEFT JOIN enderecos C ON A.id_endereco = C.id LEFT JOIN lojas D ON D.id = A.id_loja WHERE A.data >= '2011-04-01' ORDER BY A.id DESC agora quando adiciono a tabela pagamentos E, vem o problema ou posso ter mais de um pagamento por pedido, só quero o último SELECT A.*, B.nome, B.email, B.fone, C.uf, C.cidade, D.loja, E.qtd_parcelas, E.id_tipo_pagamento FROM pedidos A LEFT JOIN usuarios B ON A.id_usuario = B.id LEFT JOIN enderecos C ON A.id_endereco = C.id LEFT JOIN lojas D ON D.id = A.id_loja LEFT JOIN pagamentos E ON E.id = (SELECT id FROM pagamentos WHERE id_pedido = A.id AND data >= '2011-04-01' ORDER BY id DESC LIMIT 1) WHERE A.data >= '2011-04-01' ORDER BY A.id DESC quando faço isso ele começa a listar mais trava, são muitos pagamentos para ele checar, oq eu recomendam? uma view com o ultimo pagamento? será que não tem outra solução? obrigado pela atenção de vcs Compartilhar este post Link para o post Compartilhar em outros sites
KUROL3 3 Denunciar post Postado Junho 25, 2011 O id_pedido esta com índice criado? Posta um explain do select abaixo.. abraços marco Boa tarde esse select funciona perfeito SELECT A.*, B.nome, B.email, B.fone, C.uf, C.cidade, D.loja FROM pedidos A LEFT JOIN usuarios B ON A.id_usuario = B.id LEFT JOIN enderecos C ON A.id_endereco = C.id LEFT JOIN lojas D ON D.id = A.id_loja WHERE A.data >= '2011-04-01' ORDER BY A.id DESC agora quando adiciono a tabela pagamentos E, vem o problema ou posso ter mais de um pagamento por pedido, só quero o último SELECT A.*, B.nome, B.email, B.fone, C.uf, C.cidade, D.loja, E.qtd_parcelas, E.id_tipo_pagamento FROM pedidos A LEFT JOIN usuarios B ON A.id_usuario = B.id LEFT JOIN enderecos C ON A.id_endereco = C.id LEFT JOIN lojas D ON D.id = A.id_loja LEFT JOIN pagamentos E ON E.id = (SELECT id FROM pagamentos WHERE id_pedido = A.id AND data >= '2011-04-01' ORDER BY id DESC LIMIT 1) WHERE A.data >= '2011-04-01' ORDER BY A.id DESC quando faço isso ele começa a listar mais trava, são muitos pagamentos para ele checar, oq eu recomendam? uma view com o ultimo pagamento? será que não tem outra solução? obrigado pela atenção de vcs Compartilhar este post Link para o post Compartilhar em outros sites