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

SQL Oracle Discussion :

Requête imbriquées avec 2 conditions


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    chargé d'études statistiques et marketing
    Inscrit en
    Avril 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : chargé d'études statistiques et marketing

    Informations forums :
    Inscription : Avril 2015
    Messages : 74
    Par défaut Requête imbriquées avec 2 conditions
    bonjour

    comment écrire dans PLSQL developer 1 requête avec les conditions (mal écritres) suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select id from A where id not in (select idA from B or select idB from B)
    Bichette

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 494
    Par défaut
    Bonjour,
    Il suffit de remplacer le OR par un UNION.

    Tatayo.

  3. #3
    Membre confirmé
    Femme Profil pro
    chargé d'études statistiques et marketing
    Inscrit en
    Avril 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : chargé d'études statistiques et marketing

    Informations forums :
    Inscription : Avril 2015
    Messages : 74
    Par défaut
    merci ! UNION fonctionne mais la requete au bout de 10 min tourne encore
    peut-on l'écrire d'une autre façon avec except ou leftjoin ..?

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 494
    Par défaut
    Peut-être avec un except:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    select id
    from TableA
    except
    (
    select id1 from TableB
    union all
    select id2 from TableB
    )
    Ou avec une jointure externe:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select TableA.id
    from TableA
    left outer join TableB
    on TableA.id = TableB.idA or TableA.id = tableB.idB
    where tableB.id is null

    Tatayo.

  5. #5
    Membre confirmé
    Femme Profil pro
    chargé d'études statistiques et marketing
    Inscrit en
    Avril 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : chargé d'études statistiques et marketing

    Informations forums :
    Inscription : Avril 2015
    Messages : 74
    Par défaut
    grand merci :-)

    pourquoi union all et non union ?

  6. #6
    Membre confirmé
    Femme Profil pro
    chargé d'études statistiques et marketing
    Inscrit en
    Avril 2015
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : chargé d'études statistiques et marketing

    Informations forums :
    Inscription : Avril 2015
    Messages : 74
    Par défaut
    et si ds la requete on souhaite amener ttes les colonnes :

    select * from table A where id .... ? comment l'écrire d'après vous svp ?

  7. #7
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 694
    Billets dans le blog
    10
    Par défaut
    UNION sans ALL opère un dédoublonnage, c'est couteux
    UNION ALL ne le fait pas

    Donc si pas besoin de dédoublonner, il faut privilégier UNION ALL

  8. #8
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 964
    Par défaut
    Comparez les perfs de not in() avec not exists()

Discussions similaires

  1. Requête imbriquée avec group by
    Par pobrouwers dans le forum Langage SQL
    Réponses: 6
    Dernier message: 11/06/2009, 01h56
  2. Réponses: 3
    Dernier message: 04/07/2008, 18h03
  3. Construction d'une requête "imbriquée" avec Oracle
    Par kyra78 dans le forum Langage SQL
    Réponses: 0
    Dernier message: 05/02/2008, 15h29
  4. [MySQL] Erreur SQL 1064 : Requête imbriquée avec jointure !
    Par patchankito dans le forum Langage SQL
    Réponses: 5
    Dernier message: 31/01/2006, 11h37
  5. [DB2] Requête imbriquée avec opérateur IN
    Par JFDelges dans le forum Langage SQL
    Réponses: 23
    Dernier message: 21/12/2005, 12h27

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