IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

[Oracle] SELECT et une condition IF => possible ?


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 27
    Par défaut [Oracle] SELECT et une condition IF => possible ?
    1ere table : OV
    NumOV|Numlig|numProjet|produit|dateLiv|...

    2nd table : projet
    Numprojet|LivO/N|dateprojet|...

    Je veux toutes les lignes d'OV lié à un projet dans la table Projet et pour lesquelles la date de livraison > à la date du jour de ma requête. si date de livraison > date du jour alors MAJ livO/N à 'NON'

    SELECT dateLiv, numprojet
    FROM OV v , projet p
    WHERE v.numprojet = p.numprojet
    IF dateliv > [datedujour]
    THEN UPDATE projet
    SET LivO/N = 'NON'

    ça ressemble plus à un mixe de langages
    ********************

    Sinon je pensais à cela !

    UPDATE projet
    set LivO/N = 'NON'
    where numprojet = (SELECT numprojet
    FROM OV v , projet p
    WHERE numprojet.v = numprojet.p
    AND dateliv > [datedujour])

  2. #2
    Rédactrice

    Avatar de Fleur-Anne.Blain
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 636
    Par défaut
    Et pourquoi pas avec la structure du case?!

    http://sqlpro.developpez.com/cours/sqlaz/select/#L7.1
    la culture c'est comme la confiture moins on en a plus on l'étale.

    Mes tutos

  3. #3
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    176
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 176
    Par défaut
    tout a fait soit utiliser case,
    ou bien utiliser DECODE (sous oracle) c'est un peu la meme chose

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 27
    Par défaut
    Citation Envoyé par jejam
    tout a fait soit utiliser case,
    ou bien utiliser DECODE (sous oracle) c'est un peu la meme chose
    Donc en fait mon code deviendrait(si j'ai bien tout compris le DECODE):
    ------------------------------------------------------------------
    SELECT numprojet,decode(LivO/N,'NON',Datelive > datedujour,'OUI')
    FROM OV v, Projet P
    WHERE v.numprojet = p.numprojet
    AND datelive > datedujour
    ------------------------------------------------------------------

    Dans ce cas précis, je mets bien à jour mon champs LivO/N ????? sans passer par un UPDATE ???? étrange...

  5. #5
    Rédactrice

    Avatar de Fleur-Anne.Blain
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 636
    Par défaut
    Eu....en fait je crois qu'il y a un soucis la..je réfléchis ..ET ta date du jour tu l'obtiendras avec sysdate.

    @+
    la culture c'est comme la confiture moins on en a plus on l'étale.

    Mes tutos

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 27
    Par défaut
    je me suis trompé sur le DECODE:
    DECODE(champs,condition,expression 1 si condition vérifiée,sinon expression 2).

    Ce qui donne:

    ------------------------------------------------------------------
    SELECT numprojet,decode(LivO/N,Datelive > datedujour,'NON','OUI')
    FROM OV v, Projet P
    WHERE v.numprojet = p.numprojet
    AND datelive > datedujour
    ------------------------------------------------------------------

  7. #7
    Rédactrice

    Avatar de Fleur-Anne.Blain
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 636
    Par défaut
    Correct! et si tu veux donc comme je disais ( vu qu'apparement tu es sous Oracle..) la date du jour a savoir pour aujourdui le 23/08/06...il faut que tu utilises la fonction SYSDATE
    la culture c'est comme la confiture moins on en a plus on l'étale.

    Mes tutos

  8. #8
    Xo
    Xo est déconnecté
    Membre Expert
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Par défaut
    Citation Envoyé par philuciole
    Dans ce cas précis, je mets bien à jour mon champs LivO/N ????? sans passer par un UPDATE ???? étrange...
    Non, avec un SELECT, on ne met rien à jour
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 27
    Par défaut
    Citation Envoyé par Xo
    Non, avec un SELECT, on ne met rien à jour
    VOILAAAA...c'est bien ce que je pensais !
    Mais maintenant je ne sais plus quoi penser avec mon DECODE, et mon UPDATE de départ était meilleur non ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL-5.5] Select Where une condition unique
    Par Floyus dans le forum Requêtes
    Réponses: 2
    Dernier message: 03/05/2013, 09h28
  2. Requête avec une condition, est-ce possible ?
    Par le_chomeur dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/07/2010, 16h10
  3. Réponses: 4
    Dernier message: 02/11/2009, 12h28
  4. select suivant une condition?
    Par cortex024 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 28/06/2007, 19h03
  5. emploi d'un sub select dans une procédure - Oracle 8i -
    Par mike devimo dans le forum Oracle
    Réponses: 2
    Dernier message: 29/03/2006, 17h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo