passarito 58 Posted March 11 Report Share Posted March 11 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 post Share on other sites
antseq 91 Posted March 11 Report Share Posted March 11 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 post Share on other sites
passarito 58 Posted March 12 Author Report Share Posted March 12 (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 by passarito Link to post Share on other sites
antseq 91 Posted March 12 Report Share Posted March 12 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 post Share on other sites
passarito 58 Posted March 12 Author Report Share Posted March 12 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 post Share on other sites
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