IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Requete SELECT imbriqué


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 114
    Points : 88
    Points
    88
    Par défaut Requete SELECT imbriqué
    Bonjour à tous,

    J'ai un soucis avec un SELECT.

    J'ai une table 'enfants' avec ID et divers renseignements et une table 'presences' avec comme champs enfant, jour, montant

    J'essaie de lister tous les enfants de ma table 'enfants' sauf ceux qui sont présent pour une date bien précise. Tout en sachant qu'un enfant est enregistrer plusieurs fois dans la table 'presences' avec une date différente.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT e.id, e.nom, e.prenom, p.positive, p.type
    FROM presences p
    LEFT JOIN enfants e ON p.enfants=e.id 
    WHERE p.jour !='$date' 
    ORDER BY nom, prenom
    J'espère que j'ai été assez clair....

    Merci d'avance ;-)

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 034
    Points : 23 779
    Points
    23 779
    Par défaut
    Bonjour,

    Pour faire ça, il faut remonter la condition sur la date dans la condition de jointure . Et il faut retourner la jointure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT e.id, e.nom, e.prenom
    FROM enfants e
    LEFT JOIN presences p ON e.id = p.enfants AND p.jour = '$date' 
    WHERE p.id IS NULL 
    ORDER BY nom, prenom
    Dans le WHERE, il faut mettre un champ clé de la table presence (ne le connaissant pas, j'ai mis p.id).

    ced

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 114
    Points : 88
    Points
    88
    Par défaut
    Citation Envoyé par ced Voir le message
    Bonjour,

    Pour faire ça, il faut remonter la condition sur la date dans la condition de jointure . Et il faut retourner la jointure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT e.id, e.nom, e.prenom
    FROM enfants e
    LEFT JOIN presences p ON e.id = p.enfants AND p.jour = '$date' 
    WHERE p.id IS NULL 
    ORDER BY nom, prenom
    Dans le WHERE, il faut mettre un champ clé de la table presence (ne le connaissant pas, j'ai mis p.id).

    ced
    Super ced, c'est exactement, ce que je voulais ;-)
    Mais encore une chose, maintenant quand j'ajoute dans ma condition 'and e.nom like '%m'
    Je n'ai plus de résultat.

    Tu as une idée ?
    Merci !

  4. #4
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 034
    Points : 23 779
    Points
    23 779
    Par défaut
    Tu veux faire quoi, exactement, avec cette condition ?
    Parce que là, tu recherches tous les noms qui se terminent par la lettre m.

    ced

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 114
    Points : 88
    Points
    88
    Par défaut
    Citation Envoyé par ced Voir le message
    Tu veux faire quoi, exactement, avec cette condition ?
    Parce que là, tu recherches tous les noms qui se terminent par la lettre m.

    ced
    Je veux chercher tous les enfants de ma table 'enfants' qui termine par m mais qui ne sont pas présent à une date

    Le but c'est que je veux éviter que la personne qui va encoder les présences n'encode pas deux fois un enfant pour le même jour.

    Y a un pt formulaire de recherche d'ou le 'like '%m' qui affichera tous les enfants qui commence par m sauf ceux qui sont déjà encoder pour une date précise (LEFT JOIN presences p ON e.id = p.enfants AND p.jour= '2009-03-26' )

    Merci pour ton aide !

  6. #6
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 034
    Points : 23 779
    Points
    23 779
    Par défaut
    Citation Envoyé par lepotier Voir le message
    Je veux chercher tous les enfants de ma table 'enfants' qui termine par m mais qui ne sont pas présent à une date
    Citation Envoyé par lepotier Voir le message
    d'ou le 'like '%m' qui affichera tous les enfants qui commence par m
    Qui commencent ou qui se terminent ???
    Si c'est qui commencent, alors like 'm%'
    Si c'est qui finissent, alors like '%m'

    ced

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 114
    Points : 88
    Points
    88
    Par défaut
    Citation Envoyé par ced Voir le message
    Qui commencent ou qui se terminent ???
    Si c'est qui commencent, alors like 'm%'
    Si c'est qui finissent, alors like '%m'

    ced
    Oui, j'avais fait une erreur de frappe Sorry!
    C'est ceux qui commence par m donc like 'm%'

  8. #8
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 034
    Points : 23 779
    Points
    23 779
    Par défaut
    Du coup, c'est ?

  9. #9
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 114
    Points : 88
    Points
    88
    Par défaut
    Citation Envoyé par ced Voir le message
    Du coup, c'est ?
    Non, car avec e.nom like 'm%', il me retourne aucun enregistrement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT e.id, e.nom, e.prenom
    FROM enfants e
    LEFT JOIN presences p ON e.id = p.enfants AND p.jour = '$date' 
    WHERE p.id IS NULL and e.nom like 'm%'
    ORDER BY nom, prenom

  10. #10
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 034
    Points : 23 779
    Points
    23 779
    Par défaut
    Du côté SQL, il n'y a visiblement plus de problème...
    Il nous faudrait éventuellement un extrait de tes données (mais je doute que ça change quoi que ce soit), et surtout, il faudrait savoir ce qu'il y a dans $date...
    Que donne un echo de ta requête entière ?

    ced

  11. #11
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 114
    Points : 88
    Points
    88
    Par défaut
    Citation Envoyé par ced Voir le message
    Du côté SQL, il n'y a visiblement plus de problème...
    Il nous faudrait éventuellement un extrait de tes données (mais je doute que ça change quoi que ce soit), et surtout, il faudrait savoir ce qu'il y a dans $date...
    Que donne un echo de ta requête entière ?

    ced
    ça marche !!! peut être que je testais like '%m'

    Merci ced

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Optimiser requete (select imbriqué)
    Par sporta dans le forum Requêtes
    Réponses: 1
    Dernier message: 05/03/2011, 08h59
  2. Problème requete avec SELECT imbriqué
    Par Isiker dans le forum Langage SQL
    Réponses: 2
    Dernier message: 27/07/2010, 16h44
  3. requete update avec select imbriqué
    Par mikees dans le forum SQL
    Réponses: 3
    Dernier message: 09/02/2009, 17h42
  4. Requete select imbriquée
    Par leroidje dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/01/2008, 11h55
  5. Requete Update avec Select imbriqué: etrange resultat!
    Par corentone dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/08/2007, 15h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo