Maison >base de données >tutoriel mysql >Comment éviter les lignes en double lors de la jointure de plusieurs tables dans MySQL ?
Problème :
Lors de la sélection de données de plusieurs tables dans MySQL à l'aide d'un simple JOIN sans spécifier aucun Dans certaines conditions, cela peut entraîner des lignes en double en raison de la jointure de plusieurs lignes pour chaque clé correspondante. Comment pouvons-nous éliminer ces doublons et récupérer des lignes uniques pour chaque boisson, y compris toutes les photos associées ?
Solution :
Pour résoudre ce problème, nous devons utiliser des fonctions de regroupement et d'agrégation pour combinez les lignes en double et sélectionnez-en la valeur souhaitée.
Tout d'abord, nous regroupons les lignes par Drinks_id pour obtenir une seule ligne pour chacune. boisson :
SELECT name, price, photo FROM drinks, drinks_photos WHERE drinks.id = drinks_id GROUP BY drinks_id
Cette approche renverra une ligne par boisson avec une seule photo. Pour inclure toutes les photos associées, nous pouvons utiliser la fonction GROUP_CONCAT pour concaténer les noms de fichiers photos en une seule chaîne :
SELECT name, price, GROUP_CONCAT(photo, ',') FROM drinks, drinks_photos WHERE drinks.id = drinks_id GROUP BY drinks_id
Cette requête générera un tableau avec des lignes de boissons uniques et une chaîne concaténée contenant toutes les photos associées. noms de fichiers photo pour chaque boisson.
Notez que GROUP_CONCAT est une fonction spécifique à MySQL et peut ne pas être prise en charge dans d'autres systèmes de bases de données. Dans de tels cas, des approches alternatives, telles que des sous-requêtes ou des types de données tableau, peuvent devoir être envisagées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!