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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  SELECT ... FROM ... NOT IN ?

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

SELECT ... FROM ... NOT IN ?

n°1954205
MaRTy59
Posté le 31-12-2009 à 11:51:59  profilanswer
 

Bonjour à tous, j'aimerais récupérer tous les résultats que cette requête ne donne pas, donc j'utilise un NOT IN mais ça ne fonctionne pas, j'ai une erreur : ORA-00933: La commande SQL ne se termine pas correctement
 

Code :
  1. SELECT base2.NAME, base2.FSTNAME, base2.PNT, base2.MAT, base2.COL
  2. FROM p_ctc@lkb1b2 base2
  3. NOT IN (SELECT base1.NOM, base1.PRENOM, base1.DEP, Translate(Lower(base1.NOM), 'àãâäçéèêëîïôöûüù _-^¨"''', 'aaaaceeeeiioouuu'), Translate(Lower(base1.PRENOM),'àãâäçéèêëîïôöûüù _-^¨"''','aaaaceeeeiioouuu'), base2.NAME, base2.FSTNAME, base2.PNT, base2.MAT, base2.COL, Translate(Lower(base2.NAME),'àãâäçéèêëîïôöûüù _-^¨"''','aaaaceeeeiioouuu'), Translate(Lower(base2.FSTNAME),'àãâäçéèêëîïôöûüù _-^¨"''','aaaaceeeeiioouuu')
  4.      FROM pers.AGT base1, p_ctc@lkb1b2 base2
  5.      WHERE Translate(Lower(base1.NOM), 'àãâäçéèêëîïôöûüù _-^¨"''', 'aaaaceeeeiioouuu') = Translate(Lower(base2.NAME),'àãâäçéèêëîïôöûüù _-^¨"''','aaaaceeeeiioouuu')
  6.      AND Translate(Lower(base1.PRENOM),'àãâäçéèêëîïôöûüù _-^¨"''','aaaaceeeeiioouuu') = Translate(Lower(base2.FSTNAME),'àãâäçéèêëîïôöûüù _-^¨"''','aaaaceeeeiioouuu')
  7.      ORDER BY base1.NOM, base1.PRENOM);


Merci de votre aide.

mood
Publicité
Posté le 31-12-2009 à 11:51:59  profilanswer
 

n°1954209
toji
i am disappoint
Posté le 31-12-2009 à 11:58:10  profilanswer
 

[:leif erikson:2]  
 
Tu veux comparer quoi à quoi ? Là ta syntaxe c'est du gros n'importe quoi..pas de where, on dirait que tu veux comparer 2 requêtes mais avec un nombre de colonne différent....

n°1954211
anapajari
s/travail/glanding on hfr/gs;
Posté le 31-12-2009 à 11:59:12  profilanswer
 

manque le where, la condition tous ça  ... c'est vaguement n'importe quoi :o
regarde du coté des "union" et particulièrement "minus".


Message édité par anapajari le 31-12-2009 à 11:59:29

---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1954231
MaRTy59
Posté le 31-12-2009 à 13:25:23  profilanswer
 

Le problème est que je n'ai pas besoin de where.
Je dois comparer des personnes de deux bases différentes, la requête qui commence apres le not in me donne une liste des personnes présentes dans les deux bases, moi je veux récupérer les personnes qui ne sont pas présentes dans la base 1 par rapport à la base 2, et ma seule solution et de faire un not in, mais je ne sais pas quoi mettre dans la clause where ...

n°1954242
fred777888​999
Posté le 31-12-2009 à 14:17:19  profilanswer
 

Citation :

Le problème est que je n'ai pas besoin de where.


Soit

Citation :


moi je veux récupérer les personnes qui ne sont pas présentes dans la base 1 par rapport à la base 2


Pourtant ca c'est typiquement un where mal ecrit en francais. Je vais supposer que tu veux recuperer les personnes de la base 2 qui ne sont pas presentes dans la base 1. Je ne vois pas bien la difficulte, un truc du genre :

Code :
  1. SELECT base2.truc
  2. FROM p_ctc@lkb1b2 base2
  3. WHERE NOT EXISTS ( SELECT NULL FROM pers.AGT base1 WHERE tout ton merdier)


me semble largement suffisant.
 
==> Edit : confondu base1 et base2, je remet dans le bon sens.


Message édité par fred777888999 le 31-12-2009 à 14:21:48
n°1954248
anapajari
s/travail/glanding on hfr/gs;
Posté le 31-12-2009 à 14:25:58  profilanswer
 

Ou alors, on se sert des trucs qui existent et qui sont fait pour ça

Code :
  1. SELECT base2.truc FROM p_ctc@lkb1b2 base2
  2. minus
  3. SELECT base1.truc FROM base1


Message édité par anapajari le 31-12-2009 à 14:26:10

---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1954255
MagicBuzz
Posté le 31-12-2009 à 14:58:23  profilanswer
 

Minus existe dans Oracle maintenant ? :bounce:
 
T'ain merde, c'est juste quand je l'utilise plus qu'ils le mettent :o

n°1954257
MaRTy59
Posté le 31-12-2009 à 15:01:13  profilanswer
 

Je veux faire ça mais j'ai une erreur ....

Code :
  1. SELECT base2.NAME, base2.FSTNAME, base2.PNT, base2.MAT, base2.COL
  2. FROM p_ctc@lkb1b2 base2
  3. WHERE NOT EXISTS (
  4. SELECT base1.NOM, base1.PRENOM, base1.DEP, Translate(Lower(base1.NOM), 'àãâäçéèêëîïôöûüù _-^¨"''', 'aaaaceeeeiioouuu'), Translate(Lower(base1.PRENOM),'àãâäçéèêëîïôöûüù _-^¨"''','aaaaceeeeiioouuu'), SELECT base2.NAME, base2.FSTNAME, base2.PNT, base2.MAT, base2.COL, Translate(Lower(base2.NAME),'àãâäçéèêëîïôöûüù _-^¨"''','aaaaceeeeiioouuu'), Translate(Lower(base2.FSTNAME),'àãâäçéèêëîïôöûüù _-^¨"''','aaaaceeeeiioouuu')
  5. FROM pers.AGT base1, p_ctc@lkb1b2 base2
  6. WHERE Translate(Lower(base1.NOM), 'àãâäçéèêëîïôöûüù _-^¨"''', 'aaaaceeeeiioouuu') = Translate(Lower(base2.NAME),'àãâäçéèêëîïôöûüù _-^¨"''','aaaaceeeeiioouuu')
  7. AND Translate(Lower(base1.PRENOM),'àãâäçéèêëîïôöûüù _-^¨"''','aaaaceeeeiioouuu') = Translate(Lower(base2.FSTNAME),'àãâäçéèêëîïôöûüù _-^¨"''','aaaaceeeeiioouuu')
  8. ORDER BY base1.NOM, base1.PRENOM);


 
ORA-00907: Parenthèse de droite absente
 

n°1954258
fred777888​999
Posté le 31-12-2009 à 15:01:44  profilanswer
 

Ca fait 20 ans que ca existe, mais c'est les cas pour s'en servir qui sont rares.  
On a plus souvent besoin des clefs des enregistrements presents dans base2 et pas dans base2 (et si elles sont differentes, tu peux tj te brosser avec un minus) que des enregistrements eux-memes :)

n°1954260
MagicBuzz
Posté le 31-12-2009 à 15:02:30  profilanswer
 

ouais, enfin tu peux aussi lire les messages d'erreur, et où trouver le manque de parenthèse...
 
sans relire la requête je parie qu'un " )" place juste avant le "order by" va résoudre l'erreur...

mood
Publicité
Posté le 31-12-2009 à 15:02:30  profilanswer
 

n°1954262
fred777888​999
Posté le 31-12-2009 à 15:04:50  profilanswer
 

Merty => Y fout quoi ton order by dans le not exists ?
Pourquoi tu applique des translate (select) a des trucs que tu ne ramene pas ?
C'est quoi ce deuxieme select issu d'un copier coller dans la clause exists ?

n°1954263
MagicBuzz
Posté le 31-12-2009 à 15:07:41  profilanswer
 

ah ouais, c'était pire que je croyais, il sait pas faire de copier coller [:magicbuzz]

n°1954264
MaRTy59
Posté le 31-12-2009 à 15:19:22  profilanswer
 

Code :
  1. SELECT base2.NAME, base2.FSTNAME, base2.PNT, base2.MAT, base2.COL
  2. FROM p_ctc@lkb1b2 base2
  3. WHERE NOT EXISTS (
  4. SELECT NULL
  5. FROM pers.AGT base1, p_ctc@lkb1b2 base2
  6. WHERE Translate(Lower(base1.NOM), 'àãâäçéèêëîïôöûüù _-^¨"''', 'aaaaceeeeiioouuu') = Translate(Lower(base2.NAME),'àãâäçéèêëîïôöûüù _-^¨"''','aaaaceeeeiioouuu')
  7. AND Translate(Lower(base1.PRENOM),'àãâäçéèêëîïôöûüù _-^¨"''','aaaaceeeeiioouuu') = Translate(Lower(base2.FSTNAME),'àãâäçéèêëîïôöûüù _-^¨"''','aaaaceeeeiioouuu'));


 
Ca fonctionne mais je n'ai pas de lignes renvoyées.

n°1954266
fred777888​999
Posté le 31-12-2009 à 15:24:29  profilanswer
 

p1, j'ai l'impression qu'il faut qu'on te mache la requete, essaye de faire un peu attention ou tu n'apprendra rien :(
Ou a tu vu que je faisais une jointure avec base 2 dans la clause exists avec mon exemple ??? Heureusement, c'est juste un copier-coller a faire. Au passage, le jour ou un not exists te renvera qq chose avec une table en jointure ouverte, fais moi signe, je change de metier.

Code :
  1. SELECT base2.NAME, base2.FSTNAME, base2.PNT, base2.MAT, base2.COL
  2. FROM p_ctc@lkb1b2 base2
  3. WHERE NOT EXISTS (
  4. SELECT NULL
  5. FROM pers.AGT base1
  6. WHERE Translate(Lower(base1.NOM), 'àãâäçéèêëîïôöûüù _-^¨"''', 'aaaaceeeeiioouuu') = Translate(Lower(base2.NAME),'àãâäçéèêëîïôöûüù _-^¨"''','aaaaceeeeiioouuu')
  7. AND Translate(Lower(base1.PRENOM),'àãâäçéèêëîïôöûüù _-^¨"''','aaaaceeeeiioouuu') = Translate(Lower(base2.FSTNAME),'àãâäçéèêëîïôöûüù _-^¨"''','aaaaceeeeiioouuu'));


Allez, bonnes fetes de fin d'annee.

n°1954270
MagicBuzz
Posté le 31-12-2009 à 15:32:31  profilanswer
 

fait gaffe, y'a des gens qui travaille avec hyperfile ici, ça pourrait bien arriver :D


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

  SELECT ... FROM ... NOT IN ?

 

Sujets relatifs
Gestion de Select liésComment créer un pipe IN & OUT en executant un binaire ?
Select + XMLHttpRequest + variable de sessionSelect lié en JS+PHP : problème avec IE
[JQuery] val() avec select multipleProblème requête select avec double résultats
Probleme de requete SELECT sur msSQLSELECT MATCH sur plusieurs colonnes
comment se servir d'une valeur from une autre page?Récupérer les infos d'un SELECT Multiple (form HTML) en PHP ?
Plus de sujets relatifs à : SELECT ... FROM ... NOT IN ?


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