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

Besoin d'aide avec SQL d'Oracle [réglé] - SQL/NoSQL - Programmation

Marsh Posté le 18-09-2005 à 01:12:35    

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
Reply

Marsh Posté le 18-09-2005 à 01:12:35   

Reply

Marsh Posté le 18-09-2005 à 04:03:57    

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
Reply

Marsh Posté le 18-09-2005 à 09:30:25    

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;

Reply

Marsh Posté le 18-09-2005 à 10:59:57    

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)
Reply

Marsh Posté le 18-09-2005 à 16:03:27    

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)

Reply

Marsh Posté le 18-09-2005 à 19:04:12    

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

Reply

Marsh Posté le 18-09-2005 à 19:28:09    

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

Reply

Marsh Posté le 18-09-2005 à 19:37:05    

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

Reply

Marsh Posté le 18-09-2005 à 19:55:08    

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

Reply

Marsh Posté le 18-09-2005 à 20:09:32    

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;

Reply

Marsh Posté le 18-09-2005 à 20:09:32   

Reply

Marsh Posté le 19-09-2005 à 04:51:06    

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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed