Forum Programmation.SQL requete SQL not in

Posté par  .
Étiquettes :
0
8
juin
2006
Bonjour,
je travaille avec une distribution Debian Ubuntu et j'ai un problème avec une requete mysql

j'ai deux tables APPEL et DETAIL avec un champ NUMAPPEL dans chaque table.
je veux récupérer tout les numappels presents dans APPEL et non dans DETAIL. J'ai fais cette requete :

select distinct numappel from appel where numappel not in (select numappel from detail);

j'ai une erreur de syntaxe, je ne comprends pas.

Merci

Sylvain
  • # ta version de my sql

    Posté par  . Évalué à 1.

    il n'y a pas d'erreur dans ta requete
    c'est la version de Mysql qui n'accepte des select imbriqué
    Moi j'ai deux mysql istallé sur des machines diff et avec des versions diff
    le select imbriqué il marche sur l'un mais ne marche pas sur l'autre
    avec la meme application et la meme base de données
    coclusion install une version plus recente de MySQL
    bye
    • [^] # Re: ta version de my sql

      Posté par  . Évalué à 0.

      il n'y a pas d'erreur dans ta requete
      c'est la version de Mysql qui n'accepte des select imbriqué
      Jusqu'à la version 4.0, il me semble, la 4.1 implémentant (enfin !) les requêtes imbriquées (appelées aussi sous-requêtes).

      Par contre, ce n'est pas une erreur de syntaxe, mais je suggère très fortement de mettre des alias quand des tables ou des colonnes apparaissent plusieurs fois dans une même requête:

      SELECT DISTINCT A.NUMAPPEL
      FROM APPEL A
      WHERE A.NUMAPPEL NOT IN (SELECT D.NUMAPPEL FROM DETAIL D);
  • # LEFT JOIN...

    Posté par  . Évalué à 2.

    Moi, je verrais bien un

    SELECT DISTINCT numappel
    FROM APPEL
    LEFT JOIN DETAIL ON APPEL.numappel =DETAIL.numappel
    WHERE DETAIL.numappel IS NULL;

    Guilhelm
  • # Jointure externe

    Posté par  . Évalué à 2.

    Tu peux passer par une jointure externe :

    select
    distinct a.numappel
    from
    appel a left outer join detail d on a.numappel=b.numappel
    where
    d.numappel is null

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.