J'ai la requête suivante qui a un champ ambigu pour 'ID', je sais que j'ai besoin d'utiliser un alias mais semble faire quelque chose de mal dans le deuxième exemple lorsque j'utilise un alias
SELECT t1.ID FROM 01users AS t1 INNER JOIN 01modules ON 01modules.Modules_UserID = t1.ID INNER JOIN 01articles ON 01modules.ID = 01articles.ModuleID WHERE User = '$user' AND ID = '$moduleid' ORDER BY WeekID ASC
J'ai suivi quelques exemples en ligne et j'obtiens une erreur sur la deuxième ligne.
SELECT * FROM 01users INNER JOIN 01modules ON 01modules.Modules_UserID = 01users.ID INNER JOIN 01articles ON 01modules.ID = 01articles.ModuleID WHERE User = '$user' AND ID = '$moduleid' ORDER BY WeekID ASC
Des solutions s'il vous plaît?
3 Réponses :
Essayez ci-dessous la requête
WHERE User = '$user' AND t1.ID = '$moduleid'
Vous devez également utiliser Alias dans la clause where
.
Cette ligne
WHERE User = '$user' AND ID = '$moduleid'
Remplacé par ceci
SELECT t1.ID FROM 01users AS t1 INNER JOIN 01modules ON 01modules.Modules_UserID = t1.ID INNER JOIN 01articles ON 01modules.ID = 01articles.ModuleID WHERE User = '$user' AND t1.ID = '$moduleid' ORDER BY WeekID ASC
Merci beaucoup, cela fonctionne! Le soulignement rouge et l'erreur apparaissent toujours dans phpMyAdmin et il ne fonctionne toujours pas. C'est juste un cas d'ignorer et de continuer.
Apprenez à utiliser les alias de table!
SELECT * FROM 01users u INNER JOIN 01modules m ON m.Modules_UserID = u.ID INNER JOIN 01articles a ON m.ID = 01artacles.ModuleID WHERE u.User = '$user' AND m.ID = '$moduleid' ORDER BY ?.WeekID ASC
Vous devez qualifier toutes les références de colonne, y compris WeekId
- c'est ce que le ? est pour.
Vous devriez également lister les colonnes que vous voulez explicitement plutôt que d'utiliser select *
.
Voici la solution:
SELECT u.User, m.ID, a.Title, a.Topic, a.Text, a.WeekID, a.DatePosted, a.DateDue, a.TimePublished, a.File1, a.ID AS ArticleID FROM 01users as u INNER JOIN 01modules AS m ON m.Modules_UserID = u.ID INNER JOIN 01articles AS a ON m.ID = a.ModuleID WHERE User = '$user' AND m.ID = '$moduleid' ORDER BY WeekID ASC
phpMyAdmin - il suffit donc d'ignorer ces soulignements rouges et les erreurs car il fonctionne toujours comme prévu