Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Fernando Rutka

COnsultar 3 Tabelas em umunico codigo

Recommended Posts

BOM DIA AMIGOS,

ESTOU COM PROBLEMINHA BASICO (SE NÃO ESTIVE NÃO ESTAVA AQ NEH ...RSS)

SEGUINTE, TENHO 3 TABELAS (PA0111(MOVIMENTO), PA0022(FORNCEDOR pk = Codigo), PA0042(CLIENTES pk = Codigo) :

GOSTARIA QUE NA HORA DO SELECT APARECESSE INVEZ DO CODIGO REFERENTE AO CLIENTE OU FORNECEDOR

O NOME DO MESMO, EXEMPLO:

 

DATA T.O. N.DOC. TR. CLIENTE/FORNECEDOR PRECO C.M.P. QTD. T SALDO

----------------------------------------------------------------------------

08/06/01 1 555566 1 501437* 365.59 365.59 4.000 E 4.000

29/06/01 51 41015 2 114942* 483.00 365.59 1.000 S 3.000

06/07/01 51 41091 3 104119* 462.00 365.59 1.000 S 2.000

16/07/01 1 565375 4 501437* 369.84 368.14 3.000 E 5.000

 

*INVEZ DO CODIGO APARECER :

501437 = FORNCEDOR1

114942 = CLIENTE1

104119 = CLIENTE2

501437 = FORNCEDOR1

MEU SELECT ATUAL É :

$sql ="SELECT DATE_FORMAT(DtMovimento,'%d/%m/%y'),CodOperacao,NDocumento,Transacao,CodCliFornec,

FORMAT(Preco,2),FORMAT(CtMedPonderado,2),FORMAT(QtMovimentada,3),FORMAT(Saldo,3)

from PA0111 where codigopRODUTO ='$codigo' and Nlocal = '$local' order by Transacao asc";

 

 

DESDE JA OBRIGADO A TODOS

FERNANDO http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

na sua tabela PA0111 existe algum campo que carrega a informação que voce deseja exibir (nome do seu Cliente ou Fornecedor) ?

Não ...tem somento o codigo do cliente ou fornecedoratraves do codigo queria exibir o nome, que q esta na tabela PA0042 (Clientes) ou PA0022 (Fornecedor)....OKS???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente com:

 

SELECT	DATE_FORMAT(DtMovimento,'%d/%m/%y'),	CodOperacao,	NDocumento,	Transacao,	IFNULL(		(SELECT nome FROM PA0042 WHERE codigo = m.CodCliFornec),		(SELECT nome FROM PA0022 WHERE codigo = m.CodCliFornec)	) NOME	CodCliFornec,	FORMAT(Preco,2),	FORMAT(CtMedPonderado,2),	FORMAT(QtMovimentada,3),	FORMAT(Saldo,3)FROM PA0111 mWHERE codigopRODUTO = '$codigo' and Nlocal = '$local'ORDER BY Transacao

Embora não seja tão ideal em questão de performance. Creio que seja melhor com um Left join, ou até com uma tabela derivada com UNION.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente com:

 

SELECT	DATE_FORMAT(DtMovimento,'%d/%m/%y'),	CodOperacao,	NDocumento,	Transacao,	IFNULL(		(SELECT nome FROM PA0042 WHERE codigo = m.CodCliFornec),		(SELECT nome FROM PA0022 WHERE codigo = m.CodCliFornec)	) NOME	CodCliFornec,	FORMAT(Preco,2),	FORMAT(CtMedPonderado,2),	FORMAT(QtMovimentada,3),	FORMAT(Saldo,3)FROM PA0111 mWHERE codigopRODUTO = '$codigo' and Nlocal = '$local'ORDER BY Transacao
Embora não seja tão ideal em questão de performance. Creio que seja melhor com um Left join, ou até com uma tabela derivada com UNION.
Opá ! OBRIGRADO HEIN ! VO TENTAR EXCUTAR ESSE CODIGO, ESTOU DESESPERADO ATRAS DISSO, NÃO TENHO TANTA EXPERIENCIA ASSIM, MAS ESTOU DANDO UMA ESTUDA P/ MELHORAR UM POUCO MAIS ..RSS

ASSIM Q TIVER UMA RESPOSTA POST AQ NO FORUM .... VLW MESMO !! ABRAÇOS

Compartilhar este post


Link para o post
Compartilhar em outros sites

BOM DIA ECLESIASTES,

NÃO CONSEGUI VER O CODIGO NESSE FDS, POR ISSO SO RESPONDI HJ ..

SEGUINTE TENTEI EXECUTAR COMANDO, MAS ELE ESTA RETORNANDO UM ERRO,

TENTEI USAR NÃO SO IFNULL, COMO IF, NULL SOMENTE MAS O MESMO ERRO É RETORNADO :

*---------------------------------------------------------------------------------------------------------------------*

Erro

comando SQL:

SELECT DATE_FORMAT( DtMovimento, '%d/%m/%y' ) , CodOperacao, NDocumento, Transacao,

IFNULL((SELECT RazaoSocial FROM PA0042 WHERE Codigo = m.CodCliFornec),

(SELECT RazaoSocial FROM PA0022 WHERE Codigo = m.CodCliFornec)) NOME CodCliFornec,

FORMAT( Preco, 2 ) , FORMAT( CtMedPonderado, 2 ) , FORMAT( QtMovimentada, 3 ) , FORMAT( Saldo, 3 )

FROM PA0111 m

codigo = 'AGACER 32 BD 1' AND Nlocal = '1' ORDER BY Transacao ASC;

 

Mensagens do MySQL :

#1064 - Você tem um erro de sintaxe no seu SQL próximo a 'SELECT RazaoSocial FROM PA0042 WHERE Codigo = m.CodCliFornec),

(SELECT Raza' na linha 2

*---------------------------------------------------------------------------------------------------------------------*

SE PUDESSE DAR UMA OLHADA, TO TENTANDO DESDE DAS 06:00 DE HJ ...TAH FOGO ...RSS

OBRIGADO PELA AJUDA

 

ABRAÇOS

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.