fazer um select

13/08/2018

0

ola boa tarde eu fiz um select esse de baixo
SELECT TP.tabe_prec_prod_prec ,(select T.tabe_prec_nome FROM TABE_PREC T WHERE TP.tabe_prec_prod_codi_tabe = T.tabe_prec_codi),
(SELECT P.prod_refe FROM PROD P WHERE TP.tabe_prec_prod_codi_prod = P.prod_codi),
(SELECT P.prod_prec_vend FROM PROD P WHERE TP.tabe_prec_prod_codi_prod = P.prod_codi),
(SELECT P.prod_desc FROM PROD P WHERE TP.tabe_prec_prod_codi_prod = P.prod_codi)
FROM tabe_prec_prod TP
ate ai tudo bem ele me deu o resultado que eu queria que seria esse
REFE DESCRIÇÃO PREÇO VENDA TABELA PREÇO TABELA

GR121 HIDRA MASK MANT 250GR R$22,10 CD R$11,39
GR121 HIDRA MASK MANT 250GR R$22,10 DD R$14,84
GR121 HIDRA MASK MANT 250GR R$22,10 FRED R$9,35
GR121 HIDRA MASK MANT -250GR R$22,10 TABELA 2 R$ 9,36

so que o seguinte tem a coluna preço tabela que tem o valor referente a tabela cd,dd,fred tabela certo, eu quero fazer e assim

REFE DESCRIÇÃO PREÇO VENDA CD DD FRED TABELA 2

GR121 HIDRA MASK MANT 250GR R$22,10 R$11,39 R$14,84 R$9,35 R$ 9,36


obrigado.
Abner Carvalho

Abner Carvalho

Responder

Post mais votado

13/08/2018

Fala Abner, beleza meu camarada?

Deixa vê se eu entendi, os campos: cd, dd, fred são de outra tabela?
Se sim, qual o nome dessa tabela?

Alem disso ambas devem ter um identificador único pra gente criar essa associação. Vamos comparar o identificador único da tabela.

Outra sugestão é para não utilizar as subqueries para buscar os dados de outras tabelas, segue um exemplo:

SELECT tp.tabe_prec_prod_prec, t.tabe_prec_nome, p.prod_refe, p.prod_prec_vend, p.prod_desc 
FROM tabe_prec_prod tp, TABE_PREC t, PROD p 
WHERE tp.tabe_prec_prod_codi_prod = p.prod_codi
AND tp.tabe_prec_prod_codi_tabe = T.tabe_prec_codi


Outra sugestão é dar uma olhada nas clausulas de agrupamento https://www.devmedia.com.br/clausulas-inner-join-left-join-e-right-join-no-sql-server/18930
Abraços.

Fernando Gaspar

Fernando Gaspar
Responder

Mais Posts

14/08/2018

Abner Carvalho

Eu nao fiz o codigo como o seu mais eu alterei ele e obtive o um resultado mais ou menos como eu queria

SELECT(SELECT P.prod_refe FROM PROD P WHERE TP.tabe_prec_prod_codi_prod = P.prod_codi),
(SELECT P.prod_prec_vend FROM PROD P WHERE TP.tabe_prec_prod_codi_prod = P.prod_codi),
(SELECT P.prod_desc FROM PROD P WHERE TP.tabe_prec_prod_codi_prod = P.prod_codi),
case when(tp.tabe_prec_prod_codi_tabe = 6) THEN TP.tabe_prec_prod_prec end "DD",
case when(tp.tabe_prec_prod_codi_tabe = 3) THEN TP.tabe_prec_prod_prec end "TABELA 2",
case when(tp.tabe_prec_prod_codi_tabe = 5) THEN TP.tabe_prec_prod_prec end "CD",<br />
case when(tp.tabe_prec_prod_codi_tabe = 4) THEN TP.tabe_prec_prod_prec end "FRED"
 FROM tabe_prec_prod TP
<br />

ficou assim

e veio esse resultado

[url]https://uploaddeimagens.com.br/imagens/tabela-jpg-0fd18689-9669-44b0-b039-fcdc7a10a505[/url]

So que o resultado que eu quero e que nao duplique os produtos que so em um produto venha os valores dos campos dd,fred,tabela2.cd
Responder

15/08/2018

Emerson Nascimento

para o seu caso é totalmente desnecessário o uso de tantas subselects. faça assim:
SELECT
  P.prod_refe, P.prod_prec_vend, P.prod_desc,
  case when(tp.tabe_prec_prod_codi_tabe = 6) THEN TP.tabe_prec_prod_prec end 'DD',
  case when(tp.tabe_prec_prod_codi_tabe = 3) THEN TP.tabe_prec_prod_prec end 'TABELA 2',
  case when(tp.tabe_prec_prod_codi_tabe = 5) THEN TP.tabe_prec_prod_prec end 'CD',
  case when(tp.tabe_prec_prod_codi_tabe = 4) THEN TP.tabe_prec_prod_prec end 'FRED'
FROM
  tabe_prec_prod TP
LEFT JOIN PROD P ON
  P.prod_codi = TP.tabe_prec_prod_codi_prod

Responder

15/08/2018

Emerson Nascimento

tente algo assim:<br />
SELECT<br />
  P.prod_refe, P.prod_prec_vend, P.prod_desc,<br />
  MAX(case when(tp.tabe_prec_prod_codi_tabe = 6) then TP.tabe_prec_prod_prec else 0 end) ''DD'',<br />
  MAX(case when(tp.tabe_prec_prod_codi_tabe = 3) then TP.tabe_prec_prod_prec else 0 end) ''TABELA 2'',<br />
  MAX(case when(tp.tabe_prec_prod_codi_tabe = 5) then TP.tabe_prec_prod_prec else 0 end) ''CD'',<br />
  MAX(case when(tp.tabe_prec_prod_codi_tabe = 4) then TP.tabe_prec_prod_prec else 0 end) ''FRED''<br />
FROM<br />
  PROD P<br />
LEFT JOIN tabe_prec_prod TP ON<br />
  TP.tabe_prec_prod_codi_prod = P.prod_codi<br />
GROUP BY<br />
  P.prod_refe, P.prod_prec_vend, P.prod_desc
<br />
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar