Supposons que je cherche à sélectionner 3 colonnes à partir de quelques tables jointes: event_id, home_team et les résultats d'une fonction d'agrégation. L'event_id est une clé primaire auto-incrémentée. L'attribut home_team n'est pas unique à chaque enregistrement de la table. Je veux grouper par event_id pour générer la fonction d'agrégat, puis trier par les résultats de la fonction d'agrégat en prenant les 3 valeurs les plus élevées. Mais je veux aussi que l'home_team soit unique. Comment puis-je faire ceci? Je ne peux pas faire DISTINCT car l'enregistrement aura home_team, event_id et les résultats de la fonction d'agrégation. L'event_id sera toujours unique, donc ma requête DiSTINCT ne fait rien.GROUP BY et unicité dans plusieurs colonnes
Je dois regrouper par event_id car la fonction d'agrégat en dépend, donc je ne peux pas grouper par home_team. Si le groupe I par les deux, il ne sera pas utile, soit parce que ...
EXEMPLE
Table 1
id: 1
event_id: 1
value: 2
id 2
event_id: 1
value: 6
id 3
event_id: 2
value: 4
id4
event_id: 2
value: 3
id5
event_id: 3
value: 1
Tableau 2
event_id (PK, autoincremented): 1
home_team: 1
event_id: 2
home_team 2
event_id: 3
home_team: 1
SELECT *, AVG(table1.value) as average FROM table1 JOIN table2 ON table1.event_id = table2.event_id GROUP BY table2.event_id ORDER BY average DESC
Je dois groupe par table2.event_id afin de générer le bon résultat de la fonction agrégée. Cependant, je veux aussi HOME_TEAM soit distincte de sorte que la sortie désirée sera deux résultats avec un event_id 1 et event_id 2
Je ne vous comprends pas. Dans le domaine d'un seul event_id, peut-il y avoir plusieurs home_teams? Si c'est le cas, comment choisissez-vous «sélectionner»? –
Je pense que nous avons besoin d'un peu plus de détails. Pouvez-vous fournir des versions SQL ou simplifiées de votre SQL pour illustrer ce que vous essayez de décrire? –
Merci les gars, j'ai vomi un exemple. Espérons que cela rendra les choses plus claires ... Merci pour l'aide –