Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
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 28/09/2011, 11h54   #1
Nouveau Membre du Club
 
Inscription : juin 2007
Messages : 271
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 271
Points : 32
Points : 32
Par défaut Construction requête

Bonjour,

je veux faire une requête qui duplique la valeur du vendredi pour samedi et dimanche.

je fais un select à partir d'une table qui contient une date et une valeur. je veux faire la chose suivante :
si la date renvoyé est vendredi alors dupliquer cette valeur pour samedi et dimanche...

pourriez-vous me donner des pistes ?

merci
ouinih est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 13h14   #2
Membre confirmé
 
Homme Grégoire MARTIN
Ingénieur développement logiciels
Inscription : janvier 2011
Messages : 128
Détails du profil
Informations personnelles :
Nom : Homme Grégoire MARTIN
Âge : 32
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Finance

Informations forums :
Inscription : janvier 2011
Messages : 128
Points : 225
Points : 225
Bonjour,


sans donnée, ça va etre dur mais je suppose qu'il faut donner la valeur de vendredi aux samedi et dimanche qui suivent ce vendredi ?

Code :
1
2
3
4
5
6
7
8
9
10
 
INSERT INTO "ma table" (date,valeur)
SELECT vendredi + 1 , valeur
FROM "ma table"
WHERE date = 'vendredi'
UNION
SELECT vendredi + 2 , valeur
FROM "ma table"
WHERE date = 'vendredi'
;
__________________
Cordialement.
ORA-007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 13h32   #3
Membre éclairé
 
Avatar de boussafi
 
Homme
Ingénieur développement logiciels
Inscription : septembre 2007
Messages : 342
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Industrie

Informations forums :
Inscription : septembre 2007
Messages : 342
Points : 397
Points : 397
Envoyer un message via Yahoo à boussafi Envoyer un message via Skype™ à boussafi
Code :
1
2
3
4
5
6
7
8
INSERT INTO "ma table" (date,valeur)
SELECT vendredi + 1 , valeur
FROM "ma table"
WHERE to_char ( date, 'day')='vendredi'
UNION
SELECT vendredi + 2 , valeur
FROM "ma table"
WHERE WHERE to_char ( date, 'day')='vendredi'
boussafi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 14h13   #4
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 440
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 440
Points : 4 183
Points : 4 183
Si on va par là :
Code :
trim(TO_CHAR ( ladate, 'day', 'NLS_DATE_LANGUAGE=FRENCH')) = 'vendredi'
Et aussi, pas d'UNION, mais un UNION ALL, sinon on ne dupliquerait pas les doublons déjà existant
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 17h37   #5
Rédacteur
 
Homme Salim
Développeur et DBA Oracle
Inscription : octobre 2006
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Salim
Localisation : Canada

Informations professionnelles :
Activité : Développeur et DBA Oracle

Informations forums :
Inscription : octobre 2006
Messages : 872
Points : 1 100
Points : 1 100
Salut,

Avec ton code, il va scanner deux fois la table "ma table".

Essaie ce code
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
INSERT INTO "ma table"
            (DATE, valeur)
   SELECT vendredi + lvl, valeur
     FROM "ma table",
          (SELECT 1 lvl
             FROM DUAL
           UNION ALL
           SELECT 2 lvl
             FROM DUAL)
    WHERE TRIM (TO_CHAR (ladate, 'day', 'NLS_DATE_LANGUAGE=FRENCH')) =
                                                                    'vendredi'
__________________
Publications: http://schelabi.developpez.com/
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 16h06   #6
Nouveau Membre du Club
 
Inscription : juin 2007
Messages : 271
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 271
Points : 32
Points : 32
Merci,

j'aurais besoin de récupérer la date du dernier vendredi parce que dans la "Matable" j'ai plusieurs dates de vendredi stockée et il faut que je duplique que le dernier vendredi...

y-a t-il une méthode pour récupérer la date du dernier vendredi ?

merci
ouinih est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 16h14   #7
Membre confirmé
 
Homme Grégoire MARTIN
Ingénieur développement logiciels
Inscription : janvier 2011
Messages : 128
Détails du profil
Informations personnelles :
Nom : Homme Grégoire MARTIN
Âge : 32
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Finance

Informations forums :
Inscription : janvier 2011
Messages : 128
Points : 225
Points : 225
Bonjour,


pour selectionner le dernier vendredi de ta table :

Code :
1
2
3
4
5
6
7
 
...
WHERE date = (
                     SELECT MAX(date)
                     FROM    matable
                     WHERE  to_char(date,'DAY') = 'VENDREDI'
                     )
__________________
Cordialement.
ORA-007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 16h23   #8
Membre éclairé
 
Avatar de boussafi
 
Homme
Ingénieur développement logiciels
Inscription : septembre 2007
Messages : 342
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Industrie

Informations forums :
Inscription : septembre 2007
Messages : 342
Points : 397
Points : 397
Envoyer un message via Yahoo à boussafi Envoyer un message via Skype™ à boussafi
C'est ce que tu cherches:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
INSERT INTO "ma table"(DATE, valeur)
  SELECT vendredi + lvl, valeur
    FROM "ma table",
         (
         SELECT 1 lvl
            FROM DUAL
          UNION ALL
          SELECT 2 lvl FROM DUAL
          )
   WHERE ladate =(
                  SELECT max(t.ladate)
                  FROM "ma table" t
                  WHERE TRIM(TO_CHAR(t.ladate, 'day', 'NLS_DATE_LANGUAGE=FRENCH')) ='vendredi'
                  )
boussafi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 17h33   #9
Rédacteur
 
Homme Salim
Développeur et DBA Oracle
Inscription : octobre 2006
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Salim
Localisation : Canada

Informations professionnelles :
Activité : Développeur et DBA Oracle

Informations forums :
Inscription : octobre 2006
Messages : 872
Points : 1 100
Points : 1 100
Ou bien
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
INSERT INTO "ma table"(DATE, valeur)
SELECT MAX (vendredi) OVER () + lvl,
       MAX (valeur)KEEP (DENSE_RANK LAST ORDER BY vendredi) OVER ()
  FROM "ma table",
       (SELECT 1 lvl
          FROM DUAL
        UNION ALL
        SELECT 2 lvl
          FROM DUAL)
 WHERE TRIM (TO_CHAR (t.ladate, 'day', 'NLS_DATE_LANGUAGE=FRENCH')) =
                                                                    'vendredi'
__________________
Publications: http://schelabi.developpez.com/
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h10.


 
 
 
 
Partenaires

Hébergement Web