Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2393 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Exclure des résultats sql oracle

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Exclure des résultats sql oracle

n°1931516
Jarod511
****
Posté le 13-10-2009 à 15:18:36  profilanswer
 

Bonjour,
 
J'ai un petit soucis de script sql que je n'arrive pas à le résoudre, je fais donc appel à votre aide. Voila ma situtation : j'ai 3 tables : une table client, une table ressource et une table session.
 
Dans la table session j'ai certaines de ces ressources qui sont inscrites pour certains de ces clients.
 
Mon but serait d'afficher toutes les ressources d'un client qui ne sont pas incrites (donc les exclure) dans la table session.  
 
Dans ma table session j'ai une colonne qui se nomme idres et qui fait référence à des ressources qui sont contenues dans la table ressource (idresso).
 
Voila ce que j'ai essayé de faire mais ça m'exclus pas les données qui sont incrites dans la table session. Dans ma requête j'ai inclus cette contrainte :
 

Code :
  1. select codebarre, quantity, ... from ressource, session, ...
  2. where ...
  3. and a.ressource.idresso <> a.session.idres


 
cette contrainte n'enlève pas dans l'affichage les ressources contenues dans la table session à l'affichage. Par contre si je remplace <> par un = il m'affiche bien celle qui ont le même id. Je vois pas trop comment résoudre ce problème.
 
A l'aide, s'il vous plait.

mood
Publicité
Posté le 13-10-2009 à 15:18:36  profilanswer
 

n°1931518
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-10-2009 à 15:31:04  profilanswer
 

Code :
  1. SELECT champs FROM ressource WHERE ressource.idresso NOT IN (SELECT idres FROM session)


---------------
J'ai un string dans l'array (Paris Hilton)
n°1931532
Jarod511
****
Posté le 13-10-2009 à 15:51:27  profilanswer
 

Salut Harkonnen,
 
Super merci pour ton aide. Ca marche impec !
 
@+

n°1931571
skeye
Posté le 13-10-2009 à 17:51:04  profilanswer
 

Harkonnen a écrit :

Code :
  1. SELECT champs FROM ressource WHERE ressource.idresso NOT IN (SELECT idres FROM session)



Code :
  1. SELECT champs
  2. FROM ressource LEFT OUTER JOIN  session ON (ressource.idresso = session.idres)
  3. WHERE session.idres IS NULL;


 
[:doc petrus]


---------------
Can't buy what I want because it's free -
n°1931647
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 14-10-2009 à 09:13:13  profilanswer
 

j'y ai pensé après coup au left outer join :D


---------------
J'ai un string dans l'array (Paris Hilton)
n°1931722
Jarod511
****
Posté le 14-10-2009 à 12:46:54  profilanswer
 

Salut,
 
Quelle est la façon "la plus propre" : outer join ou un simple not in ?
En tout cas je vous remercie pour votre aide.

n°1931725
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 14-10-2009 à 13:15:50  profilanswer
 

l'Outer Join est largement plus propre, et surement plus performant


---------------
J'ai un string dans l'array (Paris Hilton)
n°1931731
skeye
Posté le 14-10-2009 à 13:49:14  profilanswer
 

Plus propre je sais pas, tout dépend ce que tu veux dire par "propre" (en l'occurrence la version avec sous-requête est plus lisible pour les gens peu habitués), mais plus performant il y a des chances.

Message cité 1 fois
Message édité par skeye le 14-10-2009 à 13:49:54

---------------
Can't buy what I want because it's free -
n°1931732
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 14-10-2009 à 13:50:04  profilanswer
 

Si c'est plus propre :o
les sous requêtes ça pue du cul :o


---------------
J'ai un string dans l'array (Paris Hilton)
n°1931735
couak
Posté le 14-10-2009 à 14:00:48  profilanswer
 

skeye a écrit :

Plus propre je sais pas, tout dépend ce que tu veux dire par "propre" (en l'occurrence la version avec sous-requête est plus lisible pour les gens peu habitués), mais plus performant il y a des chances.


Plus performant c'est sûr si on utilise un index ! Le guide du tuning oracle (éditions o'reilly) l'explique assez facilement :

Remember that indexes can tell you what is in a table but not what is not in a table. All references to NOT, !=, and <> disable index usage.

mood
Publicité
Posté le 14-10-2009 à 14:00:48  profilanswer
 

n°1931737
skeye
Posté le 14-10-2009 à 14:02:20  profilanswer
 

couak a écrit :


Plus performant c'est sûr si on utilise un index ! Le guide du tuning oracle (éditions o'reilly) l'explique assez facilement :

Remember that indexes can tell you what is in a table but not what is not in a table. All references to NOT, !=, and <> disable index usage.



Je sais - d'ailleurs il suffit de réfléchir un peu, pas besoin de bouquin pour ça :D


---------------
Can't buy what I want because it's free -
n°1931758
couak
Posté le 14-10-2009 à 14:36:07  profilanswer
 

le bon sens et la logique ne fonctionnent pas toujours :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Exclure des résultats sql oracle

 

Sujets relatifs
Conseils pour migration Access vers Oracleaffichage des résultats d'une requête SQL
Problème requête select avec double résultatsRécupérer résultats du bouton radio + zone de texte dans php
[RESOLU]Limiter le nombre de résultats d'un fichier xmlScripter installation oracle
[Oracle] Factoriser de multiples requêtes sur la même vue[SGBD/SQL] oracle spool : nom de colonne tronqué
[Oracle] tranches horairesComment importer une bdd au format Oracle data pump?
Plus de sujets relatifs à : Exclure des résultats sql oracle


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR