requete pour faire du nettoyage

yann2084
Invité n'ayant pas de compte PHPfrance

05 mai 2014, 16:38

Bonjour, je débute.
Voici mon problème:

J'ai 2 tables:
- etudiants (id_etu, nom, prenom, etc)
- dossiers (id_dossier, id_etu#, etc)

pour chaque étudiant, j'ai un dossier avec etudiants.id_etu = dossiers.id_ etu (N°etu et N° dossier identiques)

Le problème :

J'ai 300 enregistrements de dossiers et 1200 enregistrements d'étudiants.

Je voudrais donc faire du ménage et selectionner uniquement les étudiants qui n'ont pas de dossier = 900 enregistrements

J'ai beau me creuser la tête mais je bute, je crois que je prends le problème à l'envers. Je voudrais tous les autres enregistrements que les 300 enregistrements :
SELECT etudiants . *
FROM etudiants, dossiers
WHERE etudiants.id_etu = dossiers.id_etu

Merci aux plus expérimentés qui auront la gentillesse de me dépanner.

Yann

Mammouth du PHP | 571 Messages

05 mai 2014, 17:39

bonjour,
brèf tu veux afficher tous les étudiants qui n'ont pas de dossiers.

méthode 1: sous avec sous requête
tu sélectionne tous les étudiants dont les id_etus ne se trouvent pas dans la table dossiers:
SELECT * FROM etudiants e WHERE e.id_etu NOT IN (SELECT id_etu FROM dossiers);
méthode 2: jointure externe en excluant tous id_etu qui ne sont pas vides
SELECT * FROM dossiers d LEFT JOIN etudiants e ON d.id_etu = e.id_etu WHERE d.id_etu IS NULL;

yann2084
Invité n'ayant pas de compte PHPfrance

06 mai 2014, 10:23

Bonjour Yann et merci pour ton aide.

Je comprends à présent tout l'intérêt des sous requêtes et des jointures.

J'ai pu supprimer 900 enregistrements , ma base est clean! :D

Un jour arrivera où je pourrais à mon tour aider les débutants.

A bientôt

Yann

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

07 mai 2014, 09:11

Modération :
Puisque ta question est résolue, je l'indique en cliquant sur le bouton "Mettre le sujet en tant que Résolu" pour que les futures personnes qui voudront consulter ce sujet sachent qu'il contient une solution.

Tu peux réaliser cette opération toi-même en cliquant sur le bouton vert situé en haut de la page à côté du titre, si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)
Il en faut peu pour être heureux ......