gugax 0 Denunciar post Postado Julho 28, 2010 Estou com uma dúvida num sistema que estou fazendo... Tenho um BD com 3 tabelas (produtos, compras, membros) Na tabela "compras" existem 6 linhas: id - id da compraid_produto - id do produdo a ser compradoqtia_comprada - quantas unidades do produto serao compradasid_cliente - o id do cliente (comprador)modo_compra - se é "à vista" ou "a prazo".situacao - se a compra ja foi finalizada (1) ou ainda está em andamento (0).Minha dúvida é a seguinte, quero fazer uma consulta do total de clientes com produtos "ainda nao pagos" ou seja "compras ainda em andamento"!Exemplo, tenho os seguintes registros no BD: registro1 id (1)id_produto (7)qtia_comprada (2)id_cliente - (1)modo_compra - (à vista)situacao - (0)registro2 id (2)id_produto (5)qtia_comprada (1)id_cliente - (1)modo_compra - (a prazo)situacao - (0)registro3 id (3)id_produto (1)qtia_comprada (3)id_cliente - (6)modo_compra - (à vista)situacao - (0)registro4 id (4)id_produto (12)qtia_comprada (1)id_cliente - (17)modo_compra - (a prazo)situacao - (1)A consulta retornaria 2 (o cliente "1" e o cliente "6" que são os com compras em andamento)'Notem que tem dois registros com o mesmo cliente...' Alguem pode da 1 força vlw Compartilhar este post Link para o post Compartilhar em outros sites
AmareshinO 0 Denunciar post Postado Julho 28, 2010 Tem como voce postas aqui o select que voce esta usando para pegar os dados????? abraços! Compartilhar este post Link para o post Compartilhar em outros sites
neo_soro 0 Denunciar post Postado Julho 28, 2010 Tem como voce postas aqui o select que voce esta usando para pegar os dados????? abraços! Pelo que eu entendi. Se queres saber todos os usuários que estão com situação em aberto: $sql = "SELECT * FROM compras WHERE situacao = 0"; No caso não vai retornar 2 registros. E sim 3 porque por mais que o usuário 1 seja igual ele tem outros campos diferentes, ou seja, não é o mesmo registro. Agora se queres pegar os dados de cliente também: $sql = "SELECT * FROM compras as cp JOIN cliente as c ON cp.id_cliente = c.id_cliente WHERE cp.situacao = 0"; Aí, nesse caso parti do princípio que a tabela de cliente tem nome de "cliente" e que o campo da chave pimária é "id_cliente". O que está sendo feito é um JOIN da tabela compras, com a tabela cliente onde (ON) cp.id_cliente (FK na tabela compras) é igual a c.id_cliente (PK na tabela cliente) onde (WHERE) a situação deles (cp.situacao) é iguala zero, ou seja, está com compras em andamento. Compartilhar este post Link para o post Compartilhar em outros sites
jeimysons 0 Denunciar post Postado Julho 28, 2010 Cara eu faria assim <? $sql = mysql_query("SELECT * FROM `compras` WHERE situacao='0'"); while ($array = mysql_fetch_array($sql)){ $cliente = $array["id_cliente"]; echo $cliente."<br>"; } // lembre-se que a variavel $cliente so tera os clientes listados dentro do laço while // caso contrario $cliente so retornara um registro ?> Se não for isso peço desculpas Compartilhar este post Link para o post Compartilhar em outros sites
Rogério Y. 0 Denunciar post Postado Julho 28, 2010 Tente isso... SELECT membros.id FROM compras INNER JOIN membros ON membros.id = compras.id_cliente WHERE compas.situacao = 0 GROUP BY membros.id Compartilhar este post Link para o post Compartilhar em outros sites
gugax 0 Denunciar post Postado Julho 30, 2010 oO Agora que fui ver que coloquei o nome de uma das tabelas errado... As tabela são (produtos, compras e clientes) e não membros. Mas minha duvida descrita acima ja consegui resolver, usando esta consulta $select = "SELECT * FROM clientes";$select2 = mysql_query($select);$total_clientes_com_produtos_ainda_nao_pagos = "0";while($select3 = mysql_fetch_array($select2)){ $compra = "SELECT * FROM compras where id_cliente='$select3[id]' and situacao='0'"; $compra2 = mysql_query($compra); $checa_resultados = mysql_num_rows($compra2); if($checa_resultados > 0){ $total_clientes_com_produtos_ainda_nao_pagos++; }else{ $total_clientes_com_produtos_ainda_nao_pagos = $total_clientes_com_produtos_ainda_nao_pagos; }}Vejam se entendam, não sei como explicar :S - Agora tenho outra dúvida, é o seguinte, criei um link para cada produto, onde quando clicado, carrega uma página que faz uma consulta na tabela produtos e exibe as informações dele. Até aí td ok, consegui exibir todas as informações que eu queria menos uma... Esta informação é a seguinte, exibir o nome de quem ja comprou tal produto e a quantia comprada... O problema é que tenho uma tabela para os clientes contendo o nome e talz, uma para o produto contendo as informações do produto e a outra para as compras, que contem o id do produto, o id do cliente e a quantia comprada. Alguem sabe como fazer isso? Vou deixar a estrutura das 3 tabelas abaixo, pode facilitar um pouco :X produtos CREATE TABLE `produtos` ( `id` int(11) NOT NULL auto_increment, `produto` varchar(100) NOT NULL, `descricao` varchar(150) NOT NULL, `estoque` varchar(10) NOT NULL, `p_compra` varchar(15) NOT NULL, `porcentagem` varchar(15) NOT NULL, `lucro` varchar(15) NOT NULL, `p_venda` varchar(15) NOT NULL, `situacao` varchar(1) NOT NULL, `added` varchar(100) NOT NULL, `record` varchar(15) NOT NULL, PRIMARY KEY (`id`))clientes CREATE TABLE `clientes` ( `id` int(11) NOT NULL auto_increment, `nome` varchar(100) NOT NULL, `endereco` varchar(150) NOT NULL, `idt_cpf` varchar(100) NOT NULL, `telefone` varchar(50) NOT NULL, `status` varchar(30) NOT NULL, PRIMARY KEY (`id`))compras CREATE TABLE `compras` ( `id` int(11) NOT NULL auto_increment, `id_produto` varchar(100) NOT NULL, `qtia_comprada` varchar(15) NOT NULL, `id_cliente` varchar(100) NOT NULL, `modo_compra` varchar(10) NOT NULL, `situacao` varchar(50) NOT NULL, `started` varchar(100) NOT NULL, PRIMARY KEY (`id`))vlw Compartilhar este post Link para o post Compartilhar em outros sites
gugax 0 Denunciar post Postado Julho 30, 2010 Me baseando nas respostas da outra pergunta e em pesquisas sobre o assunto, consegui resolver vlw a atenção de todos! para quem quiser saber qual foi a consulta $procura_comprador = "SELECT id_produto, SUM(qtia_comprada) as qtia, id_cliente FROM compras WHERE id_produto = '".$produto_id."' GROUP BY id_cliente";$procura_comprador2 = mysql_query($procura_comprador) or die (mysql_error());$vectemalgo = mysql_num_rows($procura_comprador2); if($vectemalgo > 0){ while($procura_comprador3 = mysql_fetch_array($procura_comprador2)){ $procura_nome = "SELECT * FROM clientes WHERE id = ".$procura_comprador3[id_cliente]." LIMIT 1"; $procura_nome2 = mysql_query($procura_nome) or die (mysql_error()); $procura_nome3 = mysql_fetch_array($procura_nome2); echo "$procura_nome3[nome] ($procura_comprador3[qtia] un.)<br />"; } }else{ echo "Nenhum comprador"; } Compartilhar este post Link para o post Compartilhar em outros sites