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 :

Requête SQL avec 2 conditions


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 29
    Par défaut Requête SQL avec 2 conditions
    Bonjour,comment puis-je exprimer ces conditions en langage sql :
    insérer une ligne dans ma table en faisant 2 tests:
    On teste d'abord si le nom existe deja on teste si il est valide càd : si la champs import égale à 1 on insère pas si il est égale a 0 on insère.

    PS: NOM et IMPORT ce sont deux champs de ma table.


    merci d'avance pour votre aide.

  2. #2
    Membre actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2010
    Messages : 44
    Par défaut
    Bonsoir,

    Voilà ce que ca donnerai sous Oracle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    insert into MaTable
       (Nom, Import)
    select
            'Mon Nom'   as Nom
           ,0           as Import
      from dual
     where not exists (select 1
                         from MaTable
                        where Nom = 'Mon Nom'
                          and import = 1)
    2 remarques :

    1. La pseudo table dual d'Oracle retourne toujours une ligne.
    Suivant le SGBD que vous utilisez, il faudra peut etre vous adapter

    2. Si la clé primaire de votre table est le Nom, vous aurez un message d'erreur en violation de contrainte quand vous insererez deux fois le même nom.

    Cdlt,
    OD

  3. #3
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 29
    Par défaut
    Tout d'abord je vous remercie pour votre aide,j ai essayé la requête que vous m'avez donnée mais ça ne marche pas,j ai fait le test pour un nom qui existe déjà mais qui a une valeur (champs IMPORT) qui vaut 1,et l'insertion se fait quand même,chose qui ne doit pas être faite ,il ne doit insérer sauf si la valeur IMPORT égale à 0.

    merci
    akilam

  4. #4
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 29
    Par défaut
    en fait, j ai essayé de modifier la requête et ça marche quand il y a une seule condition c.à.d:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    INSERT INTO MaTable
       (Nom, Import)
    SELECT
            'Mon Nom'   AS Nom
           ,0           AS Import
      FROM dual
     WHERE NOT EXISTS (SELECT 1
                         FROM MaTable
                        WHERE Nom = 'Mon Nom'
                          )
    ou bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    INSERT INTO MaTable
       (Nom, Import)
    SELECT
            'Mon Nom'   AS Nom
           ,0           AS Import
      FROM dual
     WHERE NOT EXISTS (SELECT 1
                         FROM MaTable
                        WHERE 
                          AND import = 1)
    et non pas les deux,encore pire quand il y a le AND il ne prend en considération aucune de ces 2 conditions ???!!!!!!!

  5. #5
    Membre actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2010
    Messages : 44
    Par défaut
    Bonjour,


    Quel est votre jeu de test ?

    Voici le mien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    select * from MaTable;
     
    "NOM"                         "IMPORT"                      
    "Mon nom"                     "1"                           
    "Autre nom"                   "0"                           
    "Toto"                        "1"                           
    "Tata"                        "1"
    La requête que je vous ai donné n'insère rien.

    La même avec "Autre nom" créé bien une nouvelle occurrence.

    La même avec "Troisième nom" créé bien une nouvelle ligne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    "NOM"                         "IMPORT"                      
    "Mon nom"                     "1"                           
    "Autre nom"                   "0"                           
    "Toto"                        "1"                           
    "Tata"                        "1"                           
    "Autre nom"                   "0"                           
    "Troisième nom"               "0"


    Cdlt,
    OD

  6. #6
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 29
    Par défaut
    Merci beaucoup OD la requête est correcte la faute que j'avais commise c est d'insérer un nom diffrent de celui qui existe déjà dans la table et avec le quel je faisais la comparaison

    merci infiniment
    CDT akilam

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

Discussions similaires

  1. Requête sql avec plusieurs conditions
    Par scorpion75 dans le forum Requêtes
    Réponses: 2
    Dernier message: 18/06/2013, 00h28
  2. Requête SQL avec condition
    Par charlix dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/03/2008, 11h38
  3. Requête SQL avec création de table sous condition
    Par misig dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 04/11/2007, 08h58
  4. [SQL] Problème de requête SQL sur une condition avec OR
    Par vinzginz dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/10/2007, 15h31
  5. [MySQL] concaténer une requête sql avec condition
    Par maliak dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 10/02/2006, 12h01

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