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 :

Comment formuler ma condition en SQL


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2004
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 34
    Points : 36
    Points
    36
    Par défaut Comment formuler ma condition en SQL
    bonjour ,
    j'ai un soucis au niveau d'une requete sql:
    je veux selectionner une liste des enregistrement d'une table a condion que le id de l'enregistrement n'existe pas dans un autre table; voila les tables:
    doc(id_file,nom, descr)
    view( id_view, id_file, id_user)

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    352
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 352
    Points : 415
    Points
    415
    Par défaut
    Il suffit de faire une requete select de tes enregistrement et dans la clause Where de dire que tu veux ce qui ne sont pas dans l'autre table

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Select ...
    From tatable
    Where tatable.id not in (select tonautretable.id from tonautretable)

  3. #3
    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 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Ou encore, pour améliorer les perfs, passer par une jointure externe (ce qui évite la sous-requête) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT ...
    FROM tatable
    LEFT JOIN tonautretable on tatable.id = tonautretable.id
    WHERE tonautretable.id IS NULL
    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  4. #4
    Nouveau membre du Club
    Inscrit en
    Février 2004
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 34
    Points : 36
    Points
    36
    Par défaut re
    voila ma requete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELECT jos_docman.id, jos_docman.catid, jos_docman.dmname, jos_docman.dmdescription
    FROM jos_docman
    WHERE jos_docman.id NOT 
    IN (
     
     
    SELECT jos_view.id_file, jos_view.id_user
    FROM `jos_view` 
    WHERE (
    jos_view.id_user = '67'
    )
    )
    même si je l'exucute dans phpmyadmin il m'affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    MySQL a répondu: 
     
    #1241 - Operand should contain 1 column(s)
    je ne sais pas quoi faire ????!!!!!

  5. #5
    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 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Et oui, le subselect ne doit ramener qu'une seule colonne (id_user à priori) pour que ça marche. Il faut donc mettre un DISTINCT dans la sous-requête, pour plus de propreté...
    Sinon essaie plutôt avec le left join :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT jos_docman.id, jos_docman.catid, jos_docman.dmname, jos_docman.dmdescription
    FROM jos_docman js
    LEFT JOIN jos_view jv on js.id = jv.id_user
    WHERE jv.id_user IS NULL
    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    352
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 352
    Points : 415
    Points
    415
    Par défaut
    ton erreur vient du fait que dans ta clause where, tu teste si jos_docman.id n'est pas dans une collection qui contient 2 colonnes. Lorsque tu utilise un not in, il faut que dans le select qui suit, tu n'ai qu'une seule colonne (ici il te faut donc simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ... Not in (SELECT jos_view.id_file
    FROM `jos_view` 
    WHERE (
    jos_view.id_user = '67')
    Mais Ced a raison, pour des raisons d'optimisation, utilise plutôt le left join

Discussions similaires

  1. Comment formuler une condition en css ?
    Par razily dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 02/04/2012, 14h44
  2. Comment formuler les conditions imbriquées
    Par itzik92 dans le forum IHM
    Réponses: 2
    Dernier message: 30/09/2008, 23h16
  3. Réponses: 3
    Dernier message: 03/05/2007, 11h06
  4. [CR8.5] Comment executer ses propres requetes SQL.
    Par caviar dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 26/10/2004, 20h44
  5. Comment se connecter à une base SQL server
    Par zapia dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 22/10/2003, 17h39

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