Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/12/2010, 10h52   #1
Invité de passage
 
jérémy lavalley
Inscription : juin 2010
Messages : 7
Détails du profil
Informations personnelles :
Nom : jérémy lavalley
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2010
Messages : 7
Points : 4
Points : 4
Par défaut regroupement avec curseur

Bien le bonjour

Je souhaite faire une extraction d'une table en utilisant un curseur.

Voici la requete que j'utilise :
Code :
1
2
3
4
5
6
7
    SELECT  num_ligne ,
         cursor( SELECT id_objet, type_objet, objet
            FROM t_edito_detail d2 
            WHERE d.ID_EDITO = d2.ID_EDITO AND d.num_ligne = d2.num_ligne
             ) detail_row
    FROM T_EDITO_detail d
    WHERE id_EDITO = 'toto2'
J'obtiens 5 lignes avec les bon curseur en fonction des num_ligne.
Mais je souhaiterais n'obtenir que 2 ligne vu que pour toto2 je n'ai que 2 num_ligne différent.
Dans la table j'ai bien 5 ligne différentes.

Si vous avez une idée du pourquoi et même une solution différente je suis preneur.

Sur ce je vous souhaite une bonne journée et de bonne fêtes.
klyyss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 12h33   #2
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 437
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 437
Points : 4 173
Points : 4 173
Bonjour,

Je ne connais pas bien la gestion des cursors dans un select, peut être en rajoutant un group by sur le num_ligne.
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 15h16   #3
Invité de passage
 
jérémy lavalley
Inscription : juin 2010
Messages : 7
Détails du profil
Informations personnelles :
Nom : jérémy lavalley
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2010
Messages : 7
Points : 4
Points : 4
j'ai essayé les group by à plusieurs position et il y a toujours une erreur.

le j'essaye une version pl/sql.
klyyss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 15h42   #4
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 463
Points : 10 463
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Vous êtes sûr de vos données, à priori pas de problème :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
WITH t_edito_detail AS
(
SELECT 1 AS num_ligne, 'toto2' AS id_edito, 1 AS id_objet, 'ABC' AS type_objet, 'Nom ABC' AS objet FROM dual union ALL
SELECT 2             , 'toto2'            , 2            , 'DEF'              , 'Nom DEF'          FROM dual
)
SELECT num_ligne,
       cursor(
         SELECT id_objet, type_objet, objet
           FROM t_edito_detail d2 
          WHERE d2.id_edito  = d.id_edito
            AND d2.num_ligne = d.num_ligne
             ) AS detail_row
  FROM t_edito_detail d
 WHERE id_edito = 'toto2';
 
 NUM_LIGNE DETAIL_ROW
---------- -----------------
         1 1, ABC, Nom ABC  
         2 2, DEF, Nom DEF
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 16h40   #5
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 437
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 437
Points : 4 173
Points : 4 173
Waldar, c'est ce cas qui posait problème : 2 numlignes identiques
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
WITH t_edito_detail AS
(
SELECT 1 AS num_ligne, 'toto2' AS id_edito, 1 AS id_objet, 'ABC' AS type_objet, 'Nom ABC' AS objet FROM dual UNION ALL
SELECT 1 AS num_ligne, 'toto2' AS id_edito, 2 AS id_objet, 'XXX' AS type_objet, 'Nom ABC' AS objet FROM dual UNION ALL
SELECT 2             , 'toto2'            , 2            , 'DEF'              , 'Nom DEF'          FROM dual
)
SELECT num_ligne,
       CURSOR(
         SELECT id_objet, type_objet, objet
           FROM t_edito_detail d2 
          WHERE d2.id_edito  = d.id_edito
            AND d2.num_ligne = d.num_ligne
             ) AS detail_row
  FROM t_edito_detail d
 WHERE id_edito = 'toto2'
 GROUP BY num_ligne, d.id_edito
 
NUM_LIGNE	DETAIL_ROW
1	(CURSOR)
2	(CURSOR)
Dans le cursor du 1, il y a bien 2 lignes.
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 16h44   #6
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 463
Points : 10 463
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Je n'ai pas compris alors !
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 16h55   #7
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 437
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 437
Points : 4 173
Points : 4 173
lance ma requête sans le group by, tu comprendras.
Citation:
1 (CURSOR)
1 (CURSOR)
2 (CURSOR)
avec les 2 cursors des num_ligne = 1 qui sont identiques.

En gros, il veut faire un maitre-détail en ne partant que des lignes détail.
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 08h56   #8
Invité de passage
 
jérémy lavalley
Inscription : juin 2010
Messages : 7
Détails du profil
Informations personnelles :
Nom : jérémy lavalley
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2010
Messages : 7
Points : 4
Points : 4
voila vous avez trouvé la solution.

je n'avais pas du tout pensé à mettre le id_edito dans le group by.

je vous remercie et vous souhaite de bonne fêtes de fin d'années.
klyyss est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h34.


 
 
 
 
Partenaires

Hébergement Web