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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [réglé]Besoin d'aide avec SQL d'Oracle

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[réglé]Besoin d'aide avec SQL d'Oracle

n°1201713
geos9
Posté le 18-09-2005 à 01:12:35  profilanswer
 

Bonjour a tous,
j'ai commence au debut de septembre mon premier cours sur les bases de donnees avec SQL et j'ai presentement un TP a faire.  Malheureusement je me trouve a devoir chercher les codes sur le web puisque les procedures demandes n'ont pas ete explique en classe .  Votre aide serait grandement appreciee.
 
Premier probleme :
Avec un enonce UPDATE/DELETE modifier la date de debut des cours dont le jour est un samedi ou un dimanche pour le lundi suivant.  Par exemple, si la date est 2005-09-11, elle deviendra 2005-09-12.
 
Deuxieme probleme :
Separer le nom du prenom dans le champ nom. La partie prenom doit maintenant etre dans le champ Prenom.  Par exemple, Marie Lameilleure, on devrait avoir Marie dans le champ  Prenom et Lameilleure dans le champ Nom.  (Vous pouvez supposez qu'il y a toujours un espace blanc entre les deux).
 
Encore une fois, merci en avance pour votre aide.


Message édité par geos9 le 19-09-2005 à 04:51:46
mood
Publicité
Posté le 18-09-2005 à 01:12:35  profilanswer
 

n°1201726
geos9
Posté le 18-09-2005 à 04:03:57  profilanswer
 

En passant pour le deuxieme probleme c'est aussi avec un enonce UPDATE/DELETE.
 
P.S.: Je ne vous demande pas de solution complete mais seulement des sugestions de codes a utiliser avec possiblement des exemples.  Je me suis dit que je pourrais utiliser DAYOFWEEK pour le premier mais je ne sais pas comment ecrire le code avec (voici ce que j'ai fait) :
 
UPDATE Cours
 SET DateDebut=DateDebut + 1  
 WHERE DateName('dw',DateDebut)='Sunday';
 SET DateDebut=DateDebut + 2
 WHERE DAYOFWEEK(DateDebut)=6;
 
Tandis que pour le deuxieme j'ai aucune idee donc tout aide aussi minime qu'elle soit est bienvenue.
 
Merci Encore


Message édité par geos9 le 18-09-2005 à 04:07:29
n°1201745
Beegee
Posté le 18-09-2005 à 09:30:25  profilanswer
 

Utilise INSTR pour récupérer la position d'une chaîne de caractères dans une chaîne plus grande, et LENGTH qui renvoie la longueur d'une chaîne de caractères.
 
Sinon, l'UPDATE avec DAYOFWEEK est une bonne idée. Tu peux le condenser en (ou alors avec des DECODE ou CASE également si tu veux qqch de plus lisible) :
 

Code :
  1. UPDATE Cours
  2. SET DateDebut=DateDebut + (8 - DAYOFWEEK(DateDebut))
  3. WHERE DAYOFWEEK(DateDebut) >= 6;

n°1201763
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 18-09-2005 à 10:59:57  profilanswer
 

Citation :

Malheureusement je me trouve a devoir chercher les codes sur le web puisque les procedures demandes n'ont pas ete explique en classe


faudra quand même qu'on m'explique un jour comment on peut vous demander de faire un TP sur un sujet qui n'a jamais été abordé en classe...


---------------
J'ai un string dans l'array (Paris Hilton)
n°1201866
geos9
Posté le 18-09-2005 à 16:03:27  profilanswer
 

Le plus loin que le professeur est alle dans les explications c'est les commandes UPDATE/DELETE (le professeur avait meme des difficultes a nous l'expliquer).  Pour le reste, il faut chercher par nous meme sur google puisque d'apres le professeur il faut chercher au niveau universitaire pour aprendre.
 
Beegee merci pour ton aide.  Mon probleme dans le update c'est que sql semble attendre un nom de colonne apres le WHERE.  Y a t'il un moyen de contourner ce probleme? (par exemple avec une fonction semblable a WHERE mais qui n'attend pas de nom de colonne)

n°1201904
Beegee
Posté le 18-09-2005 à 19:04:12  profilanswer
 

Je comprends pas ta question.
Ce que j'ai écrit devrait passer ... sinon poste le message d'erreur.

n°1201921
geos9
Posté le 18-09-2005 à 19:28:09  profilanswer
 

Voici ce que j'ai ecris plus le message d'erreur :
SQL> UPDATE Cours
        SET DateDebut=DateDebut + (8 - DAYOFWEEK(DateDebut))
        WHERE ( DAYOFWEEK(DateDebut) >= 6 );  2    3  
        WHERE ( DAYOFWEEK(DateDebut) >= 6 )
                    *
ERROR at line 3:
ORA-00904: invalid column name
 
Au cas ou tu voudrais connaitre la version :
Connected to:
Oracle8i Release 8.1.5.0.0 - Production
With the Java option
PL/SQL Release 8.1.5.0.0 - Production

n°1201926
Beegee
Posté le 18-09-2005 à 19:37:05  profilanswer
 

Pourquoi tu as rajouté des parenthèses ???

n°1201931
geos9
Posté le 18-09-2005 à 19:55:08  profilanswer
 

Pour voir si ca changeait quelque chose mais avec ou sans, y a toujours la meme erreur.

n°1201936
Beegee
Posté le 18-09-2005 à 20:09:32  profilanswer
 

Tu peux passer par TO_DATE :
 

Code :
  1. UPDATE Cours
  2. SET DateDebut=DateDebut + (8 - TO_NUMBER(TO_DATE(DateDebut, 'D')))
  3. WHERE TO_NUMBER(TO_DATE(DateDebut, 'D')) >= 6;

mood
Publicité
Posté le 18-09-2005 à 20:09:32  profilanswer
 

n°1202039
geos9
Posté le 19-09-2005 à 04:51:06  profilanswer
 

Merci beaucoup pour l'aide, j'ai finalement trouver les deux réponses :
#1 :
UPDATE Cours
   SET DateDebut = 1 + round(DateDebut,'DAY')
   WHERE to_char(DateDebut,'D') LIKE '1'
      OR to_char(DateDebut,'D') LIKE '7';
 
 
#2
UPDATE Etudiant
   SET Prenom = trim(substr(Nom,1,instr(Nom,' '))),
  Nom = trim(substr(Nom,instr(Nom,' '),length(Nom)));
 
Ça bien l'air de fonctionner suite aux testes effectués.  Merci encore


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

  [réglé]Besoin d'aide avec SQL d'Oracle

 

Sujets relatifs
Bloc PL/SQL pour traduire note scolaire us en note fr(résolu) [C] interfacer SQL avec du C
PHP et MS SQLConseils pour oracle 10g
Besoin de conseils pour oracle 10gurl rewriting... besoin de conseils pour ma page
MySQL aide pour selectEffectuer une requête SQL en une ligne
Aide substitution de variable DOS SVP (mille merci nglechau) 
Plus de sujets relatifs à : [réglé]Besoin d'aide avec SQL d'Oracle


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