• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

mfsantos

MSSQL - Output numa coluna mas select de 2 tabelas

6 mensagens neste tópico

boas

gostava de pedir a ajuda de algum expert!

tenho este cenário,

TABELA A              |              TABELA B

------------------------- |-----------------------------

idPessoa                |                  id

id_Homem != ''    |                  tipoHomem = 'criança'

o que quero é apresentar na mesma coluna ambos os campos idPessoa e id (com Distinct) e que respeitem as condições que apresentei!

ID  |

----------

.. (idPessoa da Tabela A)

.. (id da tabela :)

.. (..)

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

Eu experimentei algo parecido a isto...

select DISTINCT CONVERT(varchar(12),id) as id
FROM (
SELECT DISTINCT CONVERT(varchar(12),ind.idPessoa) as id
	FROM [Tabela_A] as ind
	WHERE ind.[id_Homem] != '' 
union all
SELECT DISTINCT CONVERT(varchar(12),nom.id) as id
	FROM [Tabela_B] as nom
	WHERE nom.tipoHomem = 'criança' 
) as u

mas dá me um erro deste tipo...

Implicit conversion of varchar value to varchar cannot be performed because the collation of the value is unresolved due to a collation conflict.

sinceramente... já estou desesperado lololol

espero que tenha solução com o vosso conhecimento!

continuarei por aqui...

abraço

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

SELECT DISTINCT CONVERT(varchar(12),id) AS id COLLATE DATABASE_DEFAULT 
FROM (SELECT DISTINCT CONVERT(varchar(12),ind.idPessoa) AS id 
FROM [Tabela_A] AS ind		
WHERE ind.[id_Homem] != '' 	
union ALL	
SELECT DISTINCT CONVERT(varchar(12),nom.id) AS id COLLATE DATABASE_DEFAULT 		
FROM [Tabela_B] AS nom		
WHERE nom.tipoHomem = 'criança' ) AS u

Experimenta assim.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:wallbash:

Tiago Salgado,

será que a expressão repetida transmite o meu estado de espírito?

é que infelizmente... a sugestão não funciona!

o erro que dá é:

Incorrect syntax near the keyword 'COLLATE'.

já pesquisei no google... e de duas uma... ou estou cego ou não encontrei mesmo nada que me ajudasse neste problema!!!!

Obrigada pela ajuda pessoal

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois...o COLLATE tem que estar antes do alias ;) testa assim:

SELECT DISTINCT CONVERT(varchar(12),id) COLLATE DATABASE_DEFAULT AS id 
FROM (SELECT DISTINCT CONVERT(varchar(12),ind.idPessoa) AS id 
FROM [Tabela_A] AS ind		
WHERE ind.[id_Homem] != '' 	
union ALL	
SELECT DISTINCT CONVERT(varchar(12),nom.id) COLLATE DATABASE_DEFAULT AS id 		
FROM [Tabela_B] AS nom		
WHERE nom.tipoHomem = 'criança' ) AS u

Se não der, experimenta também por o COLLATE DATABASE_DEFAULT no outro id :(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:wallbash:

Agora o cartoon simplesmente me castiga pela simplicidade da solução!  :cheesygrin:

;)

Tiago.. és Grande :(

obrigadão...

Espero bem que este tópico ajude algum tipo que se sinta perdido como eu andei :( lololo

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora