Ir para conteúdo

Arquivado

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

thiaguerd

[Resolvido] Join em 3 Tabelas

Recommended Posts

•[Cidade]

o[id_Cidade]

o[id_Pais]

o[nome_cidade]

 

•[Pais]

o[id_pais]

o[nome_pais]

 

•[PontosTuristicos]

o[id_ponto]

o[nome_ponto]

 

Tenho as tabelas [Cidade], [Pais] e [PontosTuristicos]

*Todas as cidades possuem um pais

*Nem todas as cidades possuem pontos turísticos,

Eu quero em um Select apenas, mostrar todas as cidades, o seu respectivo país, e a quantidade de pontos turísticos de cada cidade (ou zero),

Eu consigo mostrar em Select apenas, todas as cidades e o seu respectivo país

Eu consigo mostrar em um Select apenas, todas as cidades e a quantidade de pontos turísticos delas

Porém as duas coisas juntas está difícil de conseguir, alguém pode me ajudar ?

 

o melhor que eu consegui foi

SELECT [Cid].[id_cidade]
     ,[Cid].[id_Pais]
     ,[Cid].[nome_cidade]
     ,[PT].[id_cidade] 
     ,[PT].[nome_ponto] 
     ,[P].[id_pais] 
     ,[P].[nome_pais]
 FROM [Cidade] [Cid]
      left join [PontosTuristico] [PT] on [Cid].[id_cidade]  = [PT].[ id_cidade]
      left join [Pais] [P] on [P].[id_pais] = [Cid].[id_pais]

 

porém o resultado repetiu segundo o ponto turistico, a cidade A tem 3 pontos, a cidade A repetiu 3 vezes

quando eu tento usar o count:

 

SELECT [Cid].[id_cidade]
     ,[Cid].[id_Pais]
     ,[Cid].[nome_cidade]
     ,count([PT].[id_cidade])  
     ,[P].[id_pais] 
     ,[P].[nome_pais]
 FROM [Cidade] [Cid]
      left join [PontosTuristico] [PT] on [Cid].[id_cidade]  = [PT].[ id_cidade]
      left join [Pais] [P] on [P].[id_pais] = [Cid].[id_pais]
 Group By [Cid].[id_cidade]
         ,[Cid].[id_Pais]
         ,[Cid].[nome_cidade]
         ,[P].[id_pais] 
         ,[P].[nome_pais]

 

vem o erro:

The text, ntext, and image data types cannot be compared or sorted, except when using IS NULL or LIKE operator.

 

não sei mais o que tentar

 

continuo sem resolver o problema

Compartilhar este post


Link para o post
Compartilhar em outros sites

realmente estes campos sao bem restritos ao uso de join, group, entre outros comandos recursivos.

Se for SQL2008, tente usar um convert para vachar(max)

 

Abçs

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.