Array
(
)

Ajuda com consulta SQL PHP, mySQL

PHP
Rumao
   - 09 mai 2012

Tenho as seguintes tabelas em meu banco de dados:
#Código
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:
#Código$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.
#CódigoSELECT 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?

Luxu
   - 10 mai 2012

#Código$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

0
|
0

Bruno Leandro
   - 11 mai 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)

0
|
0

Rumao
   - 11 mai 2012

Olá galera não postei ontem pois fiquei sem net aqui.
Consegui resolver com esta consulta:
#Código
$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.

0
|
0

Ricardo Arrigoni
   - 16 mai 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

0
|
0

Paulim
   - 16 mai 2012

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

0
|
0