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 :

Where pas de inner join


Sujet :

Langage SQL

  1. #1
    Membre averti Avatar de Gregory.M
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 684
    Points : 309
    Points
    309
    Par défaut Where pas de inner join
    Bonjour,

    J'ai une table orders et une tables bills. Comment puis-je faire récupérer tous les orders qui ne sont pas dans bills?
    J'ai une solution qui est la suivante mais elle n'est pas du tout optimal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from orders where bills.order_id not in ("tous les orders_id);

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Bonjour,

    Vous pouvez par exemple utiliser la clause "EXCEPT".

    Ou sinon utiliser le "NOT IN" avec une sous requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT * FROM orders 
    WHERE order_id NOT IN (SELECT order_id FROM bills);
    ou le "NOT EXISTS"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT * FROM orders a
    WHERE NOT EXISTS (SELECT 1 FROM bills b WHERE a.order_id = b.order_id);
    edit: selon le SGBD l'une des 3 solutions sera la meilleur niveau perf, à vous de tester

  3. #3
    Membre averti Avatar de Gregory.M
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 684
    Points : 309
    Points
    309
    Par défaut
    Citation Envoyé par punkoff Voir le message
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT * FROM orders 
    WHERE order_id NOT IN (SELECT order_id FROM bills);
    edit: selon le SGBD l'une des 3 solutions sera la meilleur niveau perf, à vous de tester
    En fait ca ne peut pas marcher, c'est de ma faute.
    La colonne order_id se trouve dans la table bills donc la colonne est inconnue.

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

Discussions similaires

  1. WHERE IN ou INNER JOIN ?
    Par Romalafrite dans le forum Requêtes
    Réponses: 6
    Dernier message: 27/08/2012, 18h35
  2. inner join pour requete update ne marche pas
    Par Garra dans le forum Requêtes
    Réponses: 4
    Dernier message: 25/01/2006, 13h14
  3. INNER JOIN ... ON ... ou jointure dans clause where
    Par schmur1 dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 28/06/2005, 09h16
  4. INNER JOIN et WHERE...=
    Par say dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/06/2005, 15h34
  5. INNER JOIN ou WHERE ...
    Par maitrebn dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 19/10/2004, 13h14

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