Consulta SQL aninhada
-
27-09-2019 - |
Pergunta
Eu tenho as seguintes tabelas:
Clube: Club_id | Título | Criado_date | ...
Club_intesect: user_id | Club_id | Acesso
Estou tentando selecionar um número variável de clubes e junto -me ao ID do usuário com o maior acesso nesse clube. Esta pessoa é considerada o proprietário.
Portanto, se o Clube 100 tiver membros A, B, C com acesso 3,4 e 5, respectivamente: quero que a consulta final selecione no Club:
Club.Club_ID Club.Title Club.Created_Date Club_Intersect.User_ID
100 | "Test Club" | "Creation Date" | C |
101 | "Test Club 2" | "Creation_Date" | Highest Access User |
...
Solução
SELECT * FROM Club c
JOIN Club_Intesect ci ON ci.Club_ID = c.Club_ID
WHERE ci.Access = (SELECT MAX(Access) FROM Club_Intesect WHERE Club_ID = c.Club_ID)
Não testado, mas você entendeu a ideia
Outras dicas
SELECT * FROM Club WHERE CLUB_ID = (SELECT Club_ID FROM Club_Intersect ORDER BY Access DESC LIMIT 1);
Eu acho que funcionaria para selecionar o clube que você deseja, usando uma consulta SQL aninhada. Você não especificou o que queria nos resultados retornados, porque essa consulta só recuperaria as colunas do clube.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow