SnakeX 1 Denunciar post Postado Novembro 5, 2010 Boas... Eu tenho esta consulta em MySQLi $query = array(); $query[] = "SELECT `c`.*, "; $query[] = "COUNT(`sa`.`id`) as `contas_alojamento`, "; $query[] = "COUNT(`sr`.`id`) as `contas_revenda` "; $query[] = "FROM `clientes` as `c`"; // Contas de Alojamento $query[] = "LEFT JOIN `servicos_alojamento` as `sa` ON `sa`.`cid`='" . $id . "' AND `sa`.`revenda`='0'"; // Contas de Revenda $query[] = "LEFT JOIN `servicos_alojamento` as `sr` ON `sr`.`cid`='" . $id . "' AND `sr`.`revenda`='1'"; $query[] = " WHERE `c`.`id`='" . $id . "'"; Ele funciona, mas o total das 'contas_alojamento' e 'contas_revenda' é sempre igual, ou seja, neste caso tenho 3 registos: ID | CID | Revenda 01 | 001 | 0 02 | 001 | 1 03 | 001 | 0 Portanto ele deveria retornar: 'contas_alojamento' = 2 'contas_revenda' = 1 mas ele assume sempre 2 no contas_revenda O que me está a faltar na consulta? Abraços! Compartilhar este post Link para o post Compartilhar em outros sites
macielcr7 9 Denunciar post Postado Novembro 5, 2010 coloque um group by Compartilhar este post Link para o post Compartilhar em outros sites
SnakeX 1 Denunciar post Postado Novembro 5, 2010 Já tentei também, GROUP BY `c`.`id` e fica igual =\ Agora estou com pouco tempo, mas vou depois tentar fazer um SELEFT dentro do LEFT JOIN, tipo LEFT JOIN (SELECT COUNT() FROM tabela WHERE x=y) para ver se fica a funcionar Compartilhar este post Link para o post Compartilhar em outros sites
macielcr7 9 Denunciar post Postado Novembro 5, 2010 então faça com INNER JOIN ,... e group by $query = array(); $query[] = "SELECT `c`.*, "; $query[] = "COUNT(`sa`.`id`) as `contas_alojamento`, "; $query[] = "COUNT(`sr`.`id`) as `contas_revenda` "; $query[] = "FROM `clientes` as `c`"; // Contas de Alojamento $query[] = "INNER JOIN `servicos_alojamento` as `sa` ON `sa`.`cid`='" . $id . "' AND `sa`.`revenda`='0'"; // Contas de Revenda $query[] = "INNER JOIN `servicos_alojamento` as `sr` ON `sr`.`cid`='" . $id . "' AND `sr`.`revenda`='1'"; $query[] = " WHERE `c`.`id`='" . $id . "' group by `c`.`id`, `sr`.`revenda`"; Compartilhar este post Link para o post Compartilhar em outros sites
SnakeX 1 Denunciar post Postado Novembro 6, 2010 Infelizmente não funcionou =\ Edit: Resolvi fazendo da maneira que mencionei: $query[] = "SELECT `c`.*,"; $query[] = "( SELECT COUNT(*) FROM `servicos_alojamento` as `sa` WHERE `sa`.`revenda`='0') AS 'contas_alojamento',"; $query[] = "( SELECT COUNT(*) FROM `servicos_alojamento` as `sr` WHERE `sr`.`revenda`='1') AS 'contas_revenda'"; $query[] = "FROM `clientes` as `c`"; $query[] = "WHERE `c`.`id`= '" . $id . "'"; Compartilhar este post Link para o post Compartilhar em outros sites