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

Langage SQL Discussion :

Sous-requêtes SQL


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 6
    Par défaut Sous-requêtes SQL
    Salut à tous,

    Je ne trouve pas de solution à ce problème de requête imbriquée, j'ai pourtant parcouru pas mal de pages de doc ces dernières 90 minutes...
    Ma requête est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $strSQL = "SELECT * FROM table1 WHERE id NOT IN(SELECT champ1,champ2 FROM table2 WHERE champ1 = '$var') ORDER BY nom ASC";
    Ce que je veux faire c'est extraire tous les champs d'une table mais dont la valeur d'un de ces champs n'est pas dans le champ d'une des lignes (et seulement une, désignée par $var) d'une autre table (champ en SET)

    Cette requête retourne tout simplement ... tout.

    J'implore votre aide si vous avez 5 minutes svp !

    Version de Mysql : 5.0.37

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Il y a une grosse erreur dans la requête et je m'étonne même qu'elle donne un résultat plutôt qu'un message d'erreur : tu testes 1 colonne (id) par rapport à 2 autres (SELECT champ1, champ2)

    Essaie plutôt comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT *
    FROM table1
    WHERE id NOT IN (
      SELECT champ2
      FROM table2
      WHERE champ1 = '$var'
    )
    ORDER BY nom
    Ou encore mieux avec une jointure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT table1.*
    FROM table1
    INNER JOIN table2 ON table1.id = table2.champ2
    WHERE champ1 <> '$var'
    ORDER BY nom
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. [CS4] Problème de sous-requêtes SQL avec Dreamweaver
    Par WPH2009 dans le forum Dreamweaver
    Réponses: 5
    Dernier message: 01/04/2009, 18h50
  2. UPDATE et sous requêtes SQL 4
    Par Cylie34 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 02/04/2007, 17h07
  3. Sous-requêtes SQL pour ACCESS
    Par bastoon dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 28/08/2006, 21h41
  4. problème sous-requête SQL et order by
    Par aguest dans le forum Requêtes
    Réponses: 10
    Dernier message: 26/12/2005, 23h57
  5. Sous-requêtes SQL
    Par mandrake256 dans le forum WinDev
    Réponses: 6
    Dernier message: 21/06/2005, 10h15

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