2
votes

Alias ​​avec jointures internes

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?


1 commentaires

phpMyAdmin - il suffit donc d'ignorer ces soulignements rouges et les erreurs car il fonctionne toujours comme prévu


3 Réponses :


1
votes

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


1 commentaires

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.



0
votes

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 * .


0 commentaires

0
votes

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


0 commentaires