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 NOT IN sous MySQL 4.0


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Requete NOT IN sous MySQL 4.0
    Bonjour,
    (Je précise que j'ai parcouru en long et en large le forum Mysql et
    l'excellent site sqlpro.developpez.com ainsi que celui de MySQL d'ailleurs., mais je suis toujours bloqué j'ai perdu une journée la dessus et je commence à craquer)

    Je suis sous MySQL 4.0.18 ... typiquement j'aurai besoin d'une sous requete, je tente donc de la contourner comme je l'ai lu a plusieurs reprises.

    Exemple :
    Table Evenements
    Numev
    1
    2
    3
    4
    5


    Table RDV
    NumEv Nom
    1 BBB
    1 CCC
    3 AAA
    3 BBB
    4 AAA
    5 CCC
    5 BBB

    Je veux voir chaque Evenement sauf si AAA y participe, c'est à dire les numev 1, 2 et 5
    Sous MySQL 4.1 je ferai donc
    SELECT Numev
    FROM Evenements
    NOT IN (
    SELECT NumEv FROM RDV WHERE Nom != "AAA")


    Sous MySQL 4.0 j'ai lu qu'il fallait utiliser LEFT JOIN
    SELECT NumEv
    FROM Evenements
    LEFT JOIN RDV
    ON Evenements.Numev = RDV.Numev
    WHERE RDV.Numev IS NULL
    AND Nom != "AAA"


    Je comprend pourquoi ca décone (il suffit d'enlever le AND pour comprendre). Le problème c'est que je ne vois pas comment contourner le problème.
    Un distinct n'y changerai rien.

    (Inutile de me dire de passer sous MySQL 4.1, je ne peux pas et en plus il n'est pas annoncé comme stable par MySQL AB)

    Par avance des milliards de merci à celui qui me dépanne (et chapeau !)

    EDIT : JE met le script de création des tables pour faciliter le travail des sauveteurs


    #
    # Table structure for table 'evenements'
    #

    CREATE TABLE evenements (
    NumEv tinyint(3) unsigned NOT NULL default '0',
    PRIMARY KEY (NumEv)
    ) TYPE=MyISAM;



    #
    # Dumping data for table 'evenements'
    #

    INSERT INTO evenements VALUES("1");
    INSERT INTO evenements VALUES("2");
    INSERT INTO evenements VALUES("3");
    INSERT INTO evenements VALUES("4");
    INSERT INTO evenements VALUES("5");


    #
    # Table structure for table 'rdv'
    #

    CREATE TABLE rdv (
    Numev tinyint(3) unsigned NOT NULL default '0',
    Nom char(3) NOT NULL default '0',
    PRIMARY KEY (Numev,Nom)
    ) TYPE=MyISAM;



    #
    # Dumping data for table 'rdv'
    #

    INSERT INTO rdv VALUES("1", "BBB");
    INSERT INTO rdv VALUES("1", "CCC");
    INSERT INTO rdv VALUES("3", "AAA");
    INSERT INTO rdv VALUES("3", "BBB");
    INSERT INTO rdv VALUES("3", "CCC");
    INSERT INTO rdv VALUES("4", "AAA");
    INSERT INTO rdv VALUES("5", "BBB");
    INSERT INTO rdv VALUES("5", "CCC");

  2. #2
    Membre régulier
    Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2003
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juillet 2003
    Messages : 94
    Points : 116
    Points
    116
    Par défaut
    ca devrait le faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT E.NumEv 
    FROM Evenements E
    LEFT JOIN rdv RDV ON E.Numev = RDV.Numev AND RDV.Nom = "AAA" 
    WHERE RDV.Numev IS NULL ;
    Cdlt

    Selecta

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Effectivement ca le fait

    (C'est consternant de voir à quel point cette requete est simple et propre ..., je crois que je vais aller me flageller).

    Mille merci.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/04/2009, 08h35
  2. Comment filtrer une requete sous mysql (ODBC)
    Par samir44 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 31/07/2007, 14h44
  3. Requete qui fontionne plus sous MySQL 4.0
    Par Gamleur84 dans le forum Requêtes
    Réponses: 2
    Dernier message: 30/08/2006, 15h08
  4. erreur de requete sous php mais pas sous mysql
    Par kenny49 dans le forum Requêtes
    Réponses: 21
    Dernier message: 28/06/2006, 16h36
  5. mauvais résultat de requete sous mysql
    Par temperature dans le forum Requêtes
    Réponses: 5
    Dernier message: 14/04/2006, 15h54

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