Fórum SELECT (Nome||Nome||Nome de outra tabela) #38316
26/08/2003
0
preciso fazer uma consulta sql com o seguinte...
campos na tabela PRODUTO = CODIGO,DESCRICAO
campos na tabela MOTOS = Codigo,NomeMOTO,CODPRODUTO
por exemplo...
na tabela MOTOS pode existir varios registros com o codigo do produto = 1
entao gostaria de dar um SELECT na tabela PRODUTOS,
mas ao mesmo tempo buscar todas as motos desse produto para o select,
PRODUTO.CODIGO = MOTOS.CODPRODUTO
existe uma forma ?
------------------------------------------------------------
|CODIGO | Descricao | Motos |
|-----------------------------------------------------------
|01 |PNEU ARO 17 | CG TITAN/NX 200/XR 200/XLX 125 |
|02 |ARO FAROL | CBX 200, CBX 150, CG KS/ES |
------------------------------------------------------------
se alguem puder me ajudar...
ficaria muito grato...
té +
Seven
Curtir tópico
+ 0Posts
26/08/2003
Ezdala
select PRODUTO.CODIGO, PRODUTO.DESCRICAO,
MOTO.CODIGO, MOTO.NOMEMOTO,
from PRODUTO inner join MOTO
on PRODUTO.CODIGO = MOTO.CODPRODUTO
vc estará selecionando todos os produtos q tem codigo na tabela moto
Gostei + 0
26/08/2003
Seven
obrigado pela ajuda...
mas assim...
eu precisaria q retornasse todos os NOMES das MOTOS em um CAMPO APENAS...
dessa forma que vc falou...
ele cria varios registros...
assim...
------------------------------------------------------------
|CODIGO | Descricao | Motos |
|-----------------------------------------------------------
|01 |PNEU ARO 17 | CG TITAN |
|01 |PNEU ARO 17 | NX 200 |
|01 |PNEU ARO 17 | XR 200 |
|01 |PNEU ARO 17 | XLX 125 |
|02 |ARO FAROL | CBX 200 |
|02 |ARO FAROL | CBX 150 |
|02 |ARO FAROL | CG KS/ES |
------------------------------------------------------------
na verdade.. essa mesma consulta acima eu precisaria assim...
------------------------------------------------------------
|CODIGO | Descricao | Motos |
|-----------------------------------------------------------
|01 |PNEU ARO 17 | CG TITAN/NX 200/XR 200/XLX 125 |
|02 |ARO FAROL | CBX 200, CBX 150, CG KS/ES |
------------------------------------------------------------
consegui criando uma tabela temporaria e na hora da consulta eu repasso todos os dados dos nomes das motos para um campo... se conseguisse direto por um select seria mais interessante e pratico, entende
mesmo assim ...
valeu pela dica !!!
té +
Gostei + 0
27/08/2003
Frcjf
Oi eu faria uma store procedure ´selecionavel´, e ia concatenando o compo motos, dai é só você dar um select e seria como se fosse uma tabelas.
segue um exemplo de Store Procedure.
COMMIT WORK;
SET AUTODDL OFF;
SET TERM ^ ;
/* Stored procedures */
CREATE PROCEDURE ´COMPRAS_ULTIMAS´
(
´dDataI´ DATE,
´dDataF´ DATE,
´iNProdutos´ SMALLINT,
´iCodigoEmpresa´ INTEGER
)
RETURNS
(
´CODIGOEMPRESA_aux´ INTEGER,
´CODIGOPRODUTO_aux´ INTEGER,
´NOMEPRODUTO_aux´ VARCHAR(50) CHARACTER SET WIN1252,
´Total_aux´ NUMERIC(12, 2)
)
AS
BEGIN EXIT; END ^
ALTER PROCEDURE ´COMPRAS_ULTIMAS´
(
´dDataI´ DATE,
´dDataF´ DATE,
´iNProdutos´ SMALLINT,
´iCodigoEmpresa´ INTEGER
)
RETURNS
(
´CODIGOEMPRESA_aux´ INTEGER,
´CODIGOPRODUTO_aux´ INTEGER,
´NOMEPRODUTO_aux´ VARCHAR(50) CHARACTER SET WIN1252,
´Total_aux´ NUMERIC(12, 2)
)
AS
DECLARE VARIABLE ´iCont´ SMALLINT;
begin
´iCont´ = 0;
for Select Distinct S.CODIGOEMPRESA, I_S.CODIGOPRODUTO, VP.NOMEPRODUTO, Sum(I_S.QTDE)
From I_SAIDA I_S
LEFT JOIN V_PRODUTO VP ON (I_S.CODIGOPRODUTO = VP.CODIGOPRODUTO)
Left JOIN Saida S ON (I_S.ID_SAIDA = S.ID_SAIDA)
Where (S.DATA_EMISSAO Between :´dDataI´ and :´dDataF´) and (S.CODIGOEMPRESA = :´iCodigoEmpresa´)
Group by S.CODIGOEMPRESA, I_S.CODIGOPRODUTO, VP.NOMEPRODUTO
Order by 3 desc into
:´CODIGOEMPRESA_aux´, :´CODIGOPRODUTO_aux´, :´NOMEPRODUTO_aux´, :´Total_aux´ do
begin
´iCont´ = ´iCont´ + 1;
suspend;
if (´iCont´ >= :´iNProdutos´) Then Exit;
end
end
^
SET TERM ; ^
COMMIT WORK;
SET AUTODDL ON;
Flávio - frcjf@ig.com.br
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)