Ajuda com consulta SQL PHP, mySQL
Tenho as seguintes tabelas em meu banco de dados:
Gostaria de selecionar os lançamentos do caixa e trazer o nome do cliente ou fornecedor a qual corresponde o lançamento.
Hoje uso esta consulta:
Ela me traz todos os lançamentos, mas no campo que seria idCli e idFor gostaria de trazer o nome dos mesmos.
Testei assim, mas não consegui trazer o nome.
Alguém poderia dar uma ajuda?
Clientes: id_cli nome cpf email Fornecedores: if_for nome cpf email Caixa: id_cai (ID caixa, único) dataoco (Data do lançamento) operacao (Tipo Operação = Entradas, Saídas) vltotal (Valor Total Lançamento) documento (Nº Documento) idCli (Id Cliente) idFor (Id Fornecedor) obs (Obs da Operação)
Gostaria de selecionar os lançamentos do caixa e trazer o nome do cliente ou fornecedor a qual corresponde o lançamento.
Hoje uso esta consulta:
$sqlCaixa = mysql_query(SELECT * FROM caixa WHERE dataoco = $txtDataOco_en ORDER BY id_cai)
Ela me traz todos os lançamentos, mas no campo que seria idCli e idFor gostaria de trazer o nome dos mesmos.
Testei assim, mas não consegui trazer o nome.
SELECT X.*, C.NOME AS CLIENTES FROM CAIXA AS X INNER JOIN CLIENTES AS C ON X.idCli ORDER BY ID_CAI
Alguém poderia dar uma ajuda?
Adilson Rumao
Curtidas 0
Respostas
Luciano Martins
09/05/2012
$sqlCaixa = mysql_query(SELECT c.nome, f.nome FROM caixa cx, fornecedores f, clientes c WHERE cx.dataoco = $txtDataOco_en ORDER BY cx.id_cai)
isso trará só os dois campos de nomes daí pra frente vc vai modelando do jeito q vc kiser
GOSTEI 0
Bruno Leandro
09/05/2012
Olá, voce pode tentar utilizar desta forma, lembrando que o inner join obriga a existir o registro em fornecedores e caixa, e cliente e caixa, caso voce queira retornar as informações do caixa e nao tenha registro associado em fornecedores ou cliente pode substituir o inner join por left join.
$sqlCaixa = mysql_query(SELECT c.nome, f.nome, cx.id_cai, cx.dataoco, cx.operacao, cx.vltotal, cx.documento
FROM caixa cx
inner join fornecedores f on f.if_for = cx.idFor
inner join clientes c on c.id_cli = cx.idCli
WHERE cx.dataoco = $txtDataOco_en
ORDER BY cx.id_cai)
$sqlCaixa = mysql_query(SELECT c.nome, f.nome, cx.id_cai, cx.dataoco, cx.operacao, cx.vltotal, cx.documento
FROM caixa cx
inner join fornecedores f on f.if_for = cx.idFor
inner join clientes c on c.id_cli = cx.idCli
WHERE cx.dataoco = $txtDataOco_en
ORDER BY cx.id_cai)
GOSTEI 0
Adilson Rumao
09/05/2012
Olá galera não postei ontem pois fiquei sem net aqui.
Consegui resolver com esta consulta:
Estou usando Left Join, pois assim como na SQL do Bruno a minha me trazia uma consulta vazia. Usando Left ele me traz os campos vazios como tem que ser. Valew pela ajuda.
PS. não achei onde finalizar o Post.
Consegui resolver com esta consulta:
$sqlCaixa = mysql_query(SELECT caixa.*, clientes.nome_cli, fornecedores.nome_for FROM caixa LEFT JOIN clientes ON (caixa.idCli = clientes.id_cli) LEFT JOIN fornecedores ON (caixa.idFor = fornecedores.id_for) WHERE dataoco = $txtDataOco_en ORDER BY id_cai)
Estou usando Left Join, pois assim como na SQL do Bruno a minha me trazia uma consulta vazia. Usando Left ele me traz os campos vazios como tem que ser. Valew pela ajuda.
PS. não achei onde finalizar o Post.
GOSTEI 0
Ricardo Arrigoni
09/05/2012
Opa pessoal, o tópico foi concluído e fechado.
Caso o autor necessite que re-abra o tópico é só entrar em contato que o mesmo será re-aberto.
abs
Caso o autor necessite que re-abra o tópico é só entrar em contato que o mesmo será re-aberto.
abs
GOSTEI 0
Paulo César
09/05/2012
se voce montar um inner join na sua tabela vai ficar muito mais raido a consulta e vai facilitar para vc.
GOSTEI 0