|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité régulier
![]() azer mery Inscription : avril 2010 Messages : 20 ![]() |
Bonjour tout le monde,
j'ai une table nommée "type_piece" : type piece ----- ----- 4012 p1 4012 p2 4013 p2 4111 p1 4111 p2 Code :
|
||
|
|
00
|
|
|
#2 | ||
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 925 ![]() |
enfantin
Code :
|
||
|
30
|
|
|
#3 |
|
Invité régulier
![]() azer mery Inscription : avril 2010 Messages : 20 ![]() |
Merci laurent pour ta réponse rapide
je sais que c'est enfantin , mais je viens tout juste de commencer j'ai donné un simple exemple de données pour me faire comprendre, ma table est déjà remplie, c'est quoi "collect"? merci |
|
|
00
|
|
|
#4 | ||
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 311 ![]() |
Sur la même idée avec ListAgg
Code :
|
||
|
|
00
|
|
|
#5 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 925 ![]() |
c'était ironique, COLLECT est quasi inconnu et extrêment rarement employé (je ne l'ai encore jamais vu). C'est aussi apparu en 10g.
c'est du code objet, ça retourne une collection d'un type temporaire. Il existe un certain nombre de fonctions / opérateurs / conditions obscures, style IS A SET, MEMBER OF, SUBMULTISET, etc... COLLECT a pas mal de bugs et n'est pas trop rapide. Mais ton exemple est vraiment un des très rares cas où COLLECT pourrait se révéler utile :-) En fait c'est exactement l'exemple que j'avais choisi dans mon livre, mais finalement je ne l'ai pas publié car je n'ai pas couvert les TYPES Oracle. Sinon il faut faire des NOT EXISTS pour être sûr qu'aucune pièce n'existe que dans un des set. |
|
00
|
|
|
#6 |
|
Membre Expert
![]() Pacman PacmanBusiness analyst Inscription : juin 2004 Messages : 1 417 ![]() |
Ho bien joué, ça compare vraiment des ensembles !
J'avais fait un truc comme ça avec GROUP_CONCAT sous MySQL (comme la solution LISTAGG de Mnitu) et ça avait divisé le temps d'exécution par 100... mais conceptuellement ça me dérangeait un peu à cause des trucs du genre JAM BON et JAMBON... (même si le risque est limité par le fait qu'on puisse choisir un délimiteur qui ait peu de chances d'apparaître dans les valeurs). (Du coup je pensais ajouter la comparaison de la concaténation des longueurs de chaine
__________________
(c'est ma photo) Paku, Paku ! Pour les jeunes incultes : non, je ne suis pas un pokémon... Le pacblog : http://pacmann.over-blog.com/ |
|
00
|
|
|
#7 | |
|
Invité régulier
![]() azer mery Inscription : avril 2010 Messages : 20 ![]() |
voici l'erreur que ça donne :
Citation:
même chose pour "LISTAGG", je précise que je suis sur Oracle 9i, ces fonctions sont supportées par 10g et 11g une solution pour 9i? merci |
|
|
|
00
|
|
|
#8 |
![]() Inscription : décembre 2002 Messages : 2 385 ![]() |
C'est très séduisant ce COLLECT, et effectivement d'une syntaxe simplissime, mais c'est quand même frustrant d'être obligé de bricoler pour se débarrasser du nom de constructeur qui fait partie du résultat.
C'est un peu une verrue sur le visage de Miss France ! La doc Oracle préconise de faire un CAST pour avoir un résultat fiable, donc il faut créer un type, mais l'inconvénient cosmétique persiste : il y a toujours le nom du type dans le résultat, dont il faut se débarrasser.
__________________
Consultant / formateur Oracle indépendant Certifié OCP 10g et 11g, sécurité 11g |
|
|
00
|
|
|
#9 | ||
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
Peut être comme ça :
Code :
|
||
|
|
10
|
|
|
#10 | ||
|
Membre Expert
![]() Pacman PacmanBusiness analyst Inscription : juin 2004 Messages : 1 417 ![]() |
Tu as l'horrible XMLAGG entre autres
Code :
__________________
(c'est ma photo) Paku, Paku ! Pour les jeunes incultes : non, je ne suis pas un pokémon... Le pacblog : http://pacmann.over-blog.com/ |
||
|
00
|
|
|
#11 | |||||||
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 925 ![]() |
Citation:
Code :
Code :
Code :
|
|||||||
|
00
|
|
|
#12 | |||
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 925 ![]() |
Citation:
Code :
|
|||
|
10
|
|
|
#13 |
|
Invité régulier
![]() azer mery Inscription : avril 2010 Messages : 20 ![]() |
Merci beaucoup
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com