passarito Posted March 11, 2021 at 02:39 PM Report Share #621641 Posted March 11, 2021 at 02:39 PM Boa tarde, Ando às voltas com isto já a algum tempo e lembrei-me se algum de voçês me pode dar uma ajuda. Tenho 3 tabelas TA, TB e TRelAB. Nas Tabelas TA e TB tenho os campos Id e Descricao Na tabela TRelAB tenho os campos IdA e IdB (É onde faço a realação entre as tabelas TA e TB) O que eu ando à procura é da query que vá listar a tabela TRelAB mas mostre o campo Descricao de cada uma das tabelas A e B bem como a possibilidade de ordenar essa listagem pelo campo Descricao ora da tabela TA ora da TB. Alguém por aí que me possa ajudar? Obrigado Link to comment Share on other sites More sharing options...
antseq Posted March 11, 2021 at 04:39 PM Report Share #621647 Posted March 11, 2021 at 04:39 PM 1 hora atrás, passarito disse: Boa tarde, Ando às voltas com isto já a algum tempo e lembrei-me se algum de voçês me pode dar uma ajuda. Tenho 3 tabelas TA, TB e TRelAB. Nas Tabelas TA e TB tenho os campos Id e Descricao Na tabela TRelAB tenho os campos IdA e IdB (É onde faço a realação entre as tabelas TA e TB) O que eu ando à procura é da query que vá listar a tabela TRelAB mas mostre o campo Descricao de cada uma das tabelas A e B bem como a possibilidade de ordenar essa listagem pelo campo Descricao ora da tabela TA ora da TB. Alguém por aí que me possa ajudar? Obrigado penso que será isto: DECLARE @TA TABLE(Id INT, Descricao NVARCHAR(100)); INSERT INTO @TA VALUES (1, 'A1'), (2, 'A2'), (3, 'A3'), (4, 'A4'), (5, 'A5'),(6, 'A6'); DECLARE @TB TABLE(Id INT, Descricao NVARCHAR(100)); INSERT INTO @TB VALUES (1, 'B1'), (2, 'B2'), (3, 'B3'), (4, 'B4'), (5, 'B5'),(6, 'B6'); DECLARE @TRelAB TABLE(IdA INT, IdB INT); INSERT INTO @TRelAB VALUES (1, 4), (2, 3), (3, 2), (4, 5), (5, 6),(6, 1); SELECT A.Descricao AS DescricaoA, B.Descricao AS DescricaoB FROM @TRelAB AB LEFT JOIN @TA A ON AB.IdA = A.Id LEFT JOIN @TB B ON AB.IdB = B.Id -- ORDER BY A.Descricao -- ORDER BY B.Descricao cps 1 Report Link to comment Share on other sites More sharing options...
passarito Posted March 12, 2021 at 10:00 AM Author Report Share #621659 Posted March 12, 2021 at 10:00 AM (edited) Muito obrigado. A query é para aplicar em vbscript e estou com dificuldade em aplicar a query. Tive de a modificar para (para já vamos esquecer a ordenação): SELECT A.Descricao AS DescricaoA, B.Descricao AS DescricaoB FROM TRelAB LEFT JOIN TA ON TRelAB .IdA = TA.Id LEFT JOIN TB ON TRelAB.IdB = TB.Id Está-me a dar erro de sintaxe: Syntax error (missing operator) in query expression "TRelAB .IdA = TA.Id LEFT JOIN TB ON TRelAB.IdB = TB.Id" Não estou a ver o que possa estar a fazer de errado. Edit: Com apenas 1 LEFT JOIN funciona, tanto na Tabela TA como na tabela TB. Com os 2 LEFT JOIN é que dá erro. Edited March 12, 2021 at 10:26 AM by passarito Link to comment Share on other sites More sharing options...
antseq Posted March 12, 2021 at 01:57 PM Report Share #621665 Posted March 12, 2021 at 01:57 PM 3 horas atrás, passarito disse: Muito obrigado. A query é para aplicar em vbscript e estou com dificuldade em aplicar a query. Tive de a modificar para (para já vamos esquecer a ordenação): SELECT A.Descricao AS DescricaoA, B.Descricao AS DescricaoB FROM TRelAB LEFT JOIN TA ON TRelAB .IdA = TA.Id LEFT JOIN TB ON TRelAB.IdB = TB.Id Está-me a dar erro de sintaxe: Syntax error (missing operator) in query expression "TRelAB .IdA = TA.Id LEFT JOIN TB ON TRelAB.IdB = TB.Id" Não estou a ver o que possa estar a fazer de errado. Edit: Com apenas 1 LEFT JOIN funciona, tanto na Tabela TA como na tabela TB. Com os 2 LEFT JOIN é que dá erro. Viva... O único erro que estou a ver, é que removeu o(s) table(s) alias(es) ("TA A" , "TB B") e no entanto está a usar os mesmos (aliases) no select "A.xxx, B.xxxx" Sem o(s) table(s) alias(es) deveria estar "SELECT TA.Descricao AS DescricaoA, TB.Descricao AS DescricaoB". Há um espaço (não intencional) entre a tabela e o campo "TRelAB .IdA", mas já testei e o espaço apesar de não desejável, funciona na mesma e não causa o tal erro. Experimente com o TA... TB... no SELECT e remova o espaço a mais, se mesmo assim não funcionar, sugiro correr a query no SQL Management Studio, que poderá ajudar (IntelliSense) a identificar/salientar a parte da query que poderá estar incorrecta. cps, 1 Report Link to comment Share on other sites More sharing options...
passarito Posted March 12, 2021 at 02:12 PM Author Report Share #621666 Posted March 12, 2021 at 02:12 PM Boas, Sim, no SELECT tenho os T's, "SELECT TA.Descricao AS DescricaoA, TB.Descricao AS DescricaoB" e também não tenho o espaço. Às vezes a culpa é do copy/paste, outras é de não o fazer 😬 Como disse, com apenas 1 LEFT JOIN funciona, tanto na Tabela TA como na tabela TB. Com os 2 LEFT JOIN é que dá erro. provavelmente o VBScript do ASP não comporta este tipo de query. A minha dúvida era se quando se passava de um LEFT JOIN para outro, não poderia faltar uma virgula, um AND, um ON, uns parentises, .... ??? "SELECT TA.Descricao AS DescricaoA, TB.Descricao AS DescricaoB FROM TRelAB LEFT JOIN TA ON TRelAB.IdA = TA.Id <AQUI> LEFT JOIN TB ON TRelAB.IdB = TB.Id" Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now