09/05/2012

Ajuda com consulta SQL PHP, mySQL

Tenho as seguintes tabelas em meu banco de dados:
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?

PHP

Rumao

Respostas

10/05/2012

Luxu

$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
Responder Citar

11/05/2012

Bruno Leandro

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)
Responder Citar

11/05/2012

Rumao

Olá galera não postei ontem pois fiquei sem net aqui.
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.
Responder Citar

16/05/2012

Ricardo Arrigoni

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
Responder Citar

16/05/2012

Paulim

se voce montar um inner join na sua tabela vai ficar muito mais raido a consulta e vai facilitar para vc.
Responder Citar