Ir para conteúdo
Fórum Script Brasil
  • 0

Left Join


tsarri

Pergunta

salve gente beleza...

bom eu tenho duas tabelas uma é são todos acessorios de carro eu esta cadastrado, tipo freio abs, air bug, turbo, capota e ect...............e a outra é uma tabela que tem o cod de anuncio e o id de cada acessorios que eu coloquei exemplo:

o anuncio 1 eu coloquei que ele tem air bug e freio, o anuncio 2 eu coloquei que ele tem ari bug, capota e turbo certo

aí eu fiz um left join para trazer todos os registros da tabela de acessorios e na de anuncios se ele não tiver o acessorios apareçe null mais não esta aconteçendo isto porque sera??

Select * 
  From Acessorio_veiculo A Left Join Anuncio_Acessorios B
    On A.AceCod = B.AceCod
 Where B.CodAnuncio = 27

Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0

se o anuncio esta na tabela b tem que ser ao contrario:

Select *
  From Acessorio_veiculo A RIGHT Join Anuncio_Acessorios B
    On A.AceCod = B.AceCod
Where B.CodAnuncio = 27[/code] ou
[code]Select *
  From Anuncio_Acessorios B Left Join Acessorio_veiculo A
    On A.AceCod = B.AceCod
Where B.CodAnuncio = 27

pra entender porque, leia isso aqui: http://scriptbrasil.com.br/forum/index.php...st&p=347652

Link para o comentário
Compartilhar em outros sites

  • 0

não entendi direito, você quer que aparecam tdos os anuncios ou tdos os acessorios?? e o que é que ele esta mostrando??

e tenta assim também:

Select * from (Select *
  From Acessorio_veiculo A Left Join Anuncio_Acessorios B
    On A.AceCod = B.AceCod
Where B.CodAnuncio Is Null Or B.CodAnuncio = 27[/code]

Link para o comentário
Compartilhar em outros sites

  • 0

nossa foi mal, é que quando eu comecei tava tentando fazer uma coisa, e termineri tentando fazer otra. era isso que eu queria dizer:

Select *
  From Acessorio_veiculo A Left Join Anuncio_Acessorios B
    On A.AceCod = B.AceCod
Where B.CodAnuncio Is Null Or B.CodAnuncio = 27[/code]

se você quer todos os acessorios, porque você filtra por anuncio (no caso 27)??

Link para o comentário
Compartilhar em outros sites

  • 0

e aí mano deu case certo ele traz 8 registros normal e mais dois que estão com null mais porque ele não trouxe mais registros null porque nos acessorios eu tenho mais de 37 registros...

se você quer todos os acessorios, porque você filtra por anuncio (no caso 27)??

Bom eu vou explicar é assim eu tenho o site de anuncios certo o cliente vai la e montar o anuncio do seu carro gol turbo o seu codanuncio o id de 27....

na parte de acessorios ele vai escolher quais acessorios o seu carro tem, tem mais de 30 acessorios para ele escolher, ele escolhe dez certo....

então eu queria fazer um select que traz todos os acessorios + os acessorios daquele carro gol turbo os que ele não escolheu ira apareçer null....entendeu o que eu quero amigo, ah e brigadao pela força

Link para o comentário
Compartilhar em outros sites

  • 0

hmm.. acho que não entendi suas tabelas o elas tão mal normalizadas. porque se cada veiculo vai ter varios acessorios, o certo não seria por o codigo do veiculo na tabela de acessorios em vez do contrario como você fez???

ou se cada carro pode ter varios acessorios E cada acessorio serve em varios carros, sendo um relacionamento de N pra N, você teria que criar uma terceira tabela pra relacionar.

Link para o comentário
Compartilhar em outros sites

  • 0

é acho que eu errei na hora de criar tabelas...

mais é assim as tabelas tem o

Anuncio_dados

que traz o Cod do anuncio, nome do carro, marca e ect

ex:

codanuncio | nome | marca

27 | gol | volsk

aí tem a tabela Acessorio_veiculo

que traz todos os acessorios

ex:

AceCod | AceNome | Status

1 | Turbo | 0

2 | Freio Abs | 0

3 | Air Bug | 0

....

aí eu fiz uma terceira tabela aonde eu gravo apenas o codanuncio e o acecod

Anuncio_Acessorios

Ex:

CodAnuncio | AceCod

27 | 5

27 | 4

27 | 10

...

eu montei errado??

qual é a forma certa de montar então??

Link para o comentário
Compartilhar em outros sites

  • 0

eu montei errado??

qual é a forma certa de montar então??

não... parece que está certinho...

Bom eu vou explicar é assim eu tenho o site de anuncios certo o cliente vai la e montar o anuncio do seu carro gol turbo o seu codanuncio o id de 27....

na parte de acessorios ele vai escolher quais acessorios o seu carro tem, tem mais de 30 acessorios para ele escolher, ele escolhe dez certo....

então eu queria fazer um select que traz todos os acessorios + os acessorios daquele carro gol turbo os que ele não escolheu ira apareçer null....entendeu o que eu quero amigo, ah e brigadao pela força

hm... está meio foda de entender...

esse select e para o cara que vai fazer o anuncio, certo?? por exemplo, ele vai anuncar o gol turbo... até esse momento ainda não existe o id 27 da tabela... assim que ele grava o anuncio, o codigo é criado, certo???

depois disso, ele vai selecionar os acessorios, dentre os 37 que existem na tabela de acessorios certo?? e enquanto isso, a tabela Anuncio_Acessorios não possui nenhum dado do anuncio 27, é isso??

assim, ele escolhe os acessorios, e ai os dados são gravados, certo???

depois disso você tenta dar o select, certo???

bom, se eu entendi o que você quer, acho que seria isso:

Select *
  From Acessorio_veiculo A Left Join (Select * from Anuncio_Acessorios Where CodAnuncio = 27) As B
    On A.AceCod = B.AceCod[/code]

Link para o comentário
Compartilhar em outros sites

  • 0

você que algo assim

select 
         a.nome, 
         a.marca, 
         c.AceNome as acessorios 

from 
         anuncio_dados a,  acessorio_veiculo c left join anuncio_acessorios b 
            
             on c.acecod = b.acecod

where 
         a.codanuncio = 27

é isso ai ele vai retornar diversas vezes o nome do carro, até chegar no final da tabela 2

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...