Tenho uma tabela de competências. Eu fiz isso como uma relação pai-filho, então há, por exemplo, carteira de motorista como uma linha e carteira de motorista de carro como outra linha, tendo 'carteira de motorista' como pai.
Isso pode ser impresso no MS-Access, em um relatório ou algo assim? Impresso como uma árvore ou como uma lista como:
- carteira de motorista
- Carteira de motorista sob carteira de motorista
A tabela tem 5 colunas e uma consulta de seleção tem esta aparência:
SELECT Kompetenser.[ID], Kompetenser.[data_criada], Kompetenser.[nome], Kompetenser.[Metakompetens], Kompetenser.[descrições] FROM Kompetenser;
onde Kompetenser.[Metakompetens] é um 'Número' (sueco 'Tal') referente à mesma tabela.
Achei um post que é a mesma dúvida, e tem uma resposta, mas da qual não consigo rodar o sql:
https://stackoverflow.com/a/45797072/5730322
(Ele fornece uma lista com linhas começando com o pai, mas tudo bem)
Tentei fazer uma consulta:
SELECT
L0.namn AS Cat0,
L1.namn AS Cat1,
L2.namn AS Cat2,
L3.namn AS Cat3,
L4.namn AS Cat4,
L5.namn AS Cat5,
L6.namn AS Cat6,
L7.namn AS Cat7
FROM
Kompetenser AS L0
LEFT JOIN Kompetenser AS L1
ON L0.ID=L1.[Metakompetens]
LEFT JOIN AS L2
ON L1.ID = L2.Metakompetens
LEFT JOIN Kompetenser AS L3
ON L2.ID = L3.Metakompetens
LEFT JOIN Kompetenser AS L4
ON L3.ID = L4.Metakompetens
LEFT JOIN Kompetenser AS L5
ON L4.ID = L5.Metakompetens
LEFT JOIN Kompetenser AS L6
ON L5.ID = L6.Metakompetens
LEFT JOIN Kompetenser AS L7
ON L6.ID = L7.Metakompetens
WHERE isnull(L0.Metakompetens)
Diz (traduzido fr. sueco):
Erro de sintaxe (falta de operador) i consulto 'L0.ID=L1.[Metakompetens] ... ao final da consulta
Então a questão é como consertar meu sql.
A sintaxe de junção do MS Access é peculiar. Quando sua consulta precisa ter mais de um, você deve começar a usar parênteses. Mais especificamente, para introduzir a próxima junção, você precisa colocar a junção anterior entre parênteses. Por exemplo, é assim que ficaria para duas junções:
E é assim que sua consulta precisaria mudar depois de adicionar uma terceira junção:
Continue adicionando quantos parênteses forem necessários dessa maneira para cobrir todas as junções necessárias para a consulta.
Isso independe do tipo de junção (esquerda, direita, interna).