0
votes

Requête MySQL à rejoindre, comparer deux tables et retourner tous les enregistrements de la première table

J'essaie de comparer les données à partir de deux tables différentes, en renvoyant toutes les données de la première table, puis sélectionnez les données disponibles dans la deuxième table si elle a.

Mon objectif principal est de vérifier si l'étudiant a été inscrit à un cours , si oui, je montrerai quelque chose à indiquer. Ci-dessous est ma structure de table et tente que j'ai faite.

cours xxx

étudiant_courses xxx

/ tentative de requête SQL / xxx

/ interrogation de résultat attendu One / xxx

/ requête de résultat attendu Deux / xxx


1 commentaires

Changer où et


3 Réponses :


1
votes

Vous pouvez y parvenir avec une seule requête.

SELECT course_code,  
CASE WHEN course_codes != '' THEN 'ENROLLED' ELSE '' END AS STS
FROM courses
LEFT JOIN student_courses ON (student_courses.course_codes = courses.course_code);


1 commentaires

Comment utiliser l'endroit où vérifier la clause pour vérifier l'étudiant individuel? Quand j'ajoute où étudiant_courses.student_id = 'peter123' il ne renvoie que 3 articles



1
votes

Vous pouvez utiliser

VUE            Enrolled
OBJECTIVE C     
Java    
PHP     
HTML    
PYTHON  
SWIFT          Enrolled
SQL            Enrolled
HACKZA  


2 commentaires

J'ai essayé votre exemple et cela a fonctionné, mais comment puis-je obtenir la valeur de inscrit dans mon code PHP?


Cela dépend de ce que vous utilisez MySQLI ou PDO. Regardez ici, c'est Simpole à Adept Stackoverflow.com/Questtions/11575432/...



0
votes

Vous devez déplacer la condition de l'endroit où la clause ON: xxx pré>

i joint cs.course_name code> au lieu de cs.course_code Code> Pour faire ce travail, mais je pense que dans les données d'échantillons que vous avez postés, les 2 colonnes sont par erreur attribuées à ces données. Si tel est le cas, changez sur sur cs.course_code = SCS.Course_codes Code>
Voir le Démo .
Résultats: P>

| course_name | ischeck  |
| ----------- | -------- |
| VUE         | ENROLLED |
| SWIFT       | ENROLLED |
| SQL         | ENROLLED |
| OBJECTIVE C |          |
| Java        |          |
| PHP         |          |
| HTML        |          |
| PYTHON      |          |
| HACKZA      |          |


3 commentaires

J'ai essayé votre réponse et cela fonctionne, mais j'ai le problème de le saisir de mon code, est-il possible d'assigner ischeck comme "inscrit" afin que je puisse vérifier si ($ ligne-> ischeck == "inscrit") ?


Lorsque je imprime l'objet retourné, j'ai quelque chose comme ce tableau (objet) ('"Courses_name' => 'Langue anglaise', 'Courses_code' =>" Eng101 "," Case quand scs.student_id n'est pas null alors \ \ 'Inscrit \' End '=>' Inscrit ',) Je ne comprends pas vraiment comment accéder à ma php


J'ai ajouté l'alias ischeck dans la requête.