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ódigo
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?

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