2017-10-20 1 views
0

Je fais un projet sur un système de présence utilisant PHP et MySQL. J'ai des problèmes avec ma syntaxe SQL. Je veux afficher tous les noms des étudiants dans ma table «étudiants» et les enregistrements de la table «fréquentation», mais je continue à boucler 5 enregistrements supplémentaires sur mon écran. C'est ce que j'ai fait jusqu'ici.php/mysql. sélectionner 2 champs communs dans 2 tableaux

SELECT students.name as StudentName, attendance.timelogin as TimeLogin, attendance.datelogin as DateLogin FROM students, attendance WHERE students.strand LIKE '%TVL%' AND students.gender ='Male' AND attendance.datelogin LIKE '%{$month}%' AND attendance.timelogin >= '12' ORDER BY students.name ASC; 

screen-output

+0

de l'étudiant * de ma table « étudiants » –

+0

Je ne vois pas que vous joindrez les 2 tables. – isaace

+0

Je veux afficher P pour présent, L pour retard et A pour absent dans la colonne numéro de date de la table html. –

Répondre

0

Vous devez ajouter la condition de jointure correctement, donc si vous avez une table primaire Id clé dans les étudiants et une autre clé étrangère studentid dans le tableau de présence utiliser. Et utiliser syntaxe de jointure ANSI comme ceci:

SELECT 
    s.name as StudentName, 
    a.timelogin as TimeLogin, 
    a.datelogin as DateLogin 
    UPPER(LEFT(status, 1)) AS Status 
FROM students AS s 
INNER JOIN attendance AS a ON s.Id = a.StudentId 
WHERE s.strand LIKE '%TVL%' 
    AND s.gender ='Male' 
    AND a.datelogin LIKE '%{$month}%' 
    AND a.timelogin >= '12' 
ORDER BY s.name ASC; 
+0

comment utiliser les variables a et s de ce code "FROM students AS s Participation INNER JOIN COMME" ?? –

+1

a et s ne sont que des alias pour les noms des tables –

+0

@JanMichaelBesinga Comme l'a dit Lio, il suffit d'alias, vous pouvez vous en débarrasser et utiliser les noms complets des tables. –