J'ai deux tables de base de données MySQL: l'une contenant une liste de championnats et l'autre un changement de titre d'enregistrement. Les schémas ressemblent à ceci:Commander une requête MySQL avec LEFT JOIN
championships
id INT AUTO_INCREMENT PRIMARY_KEY
name VARCHAR(255) NOT NULL UNIQUE
rank INT(2) NOT NULL DEFAULT '1'
title_history
id INT AUTO_INCREMENT PRIMARY_KEY
championship INT FOREIGN_KEY REFERENCES (championships.id)
winner VARCHAR(255) NOT NULL
date_won DATE NOT NULL
Je veux être en mesure de tirer le dernier détenteur du titre. Je peux en tirer titulaire d'un titre avec la requête MySQL LEFT JOIN
suivante:
SELECT c.id, h.winner
FROM championships c
LEFT JOIN title_history h
ON c.id = h.championship
ORDER BY c.rank ASC
Cependant, cela tire juste le premier résultat pour chaque championnat sur un index par défaut (id
je présume). Lorsque j'ai essayé d'ajouter ORDER BY h.date_won
en tant que clause, la requête semble tomber et ne renvoie aucun résultat.
Est-ce que je fais quelque chose de mal?
Qu'est-ce que 'championships.rank' représente? –
C'est pour que je puisse commander les championnats en importance. –
Je ne comprends pas vraiment si vous voulez d'abord pour chaque championnat, alors vous devriez avoir un certain regroupement non seulement gauche joindre, est-ce que cette requête vous collé ici incomplète? Changer 'order by' ne change pas le nombre de lignes que vous obtenez alors qu'est-ce que vous avez exactement changé dans cette requête? –