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

SQL Oracle Discussion :

jointure externe (complexe) Sur des clés concaténé


Sujet :

SQL Oracle

  1. #21
    Membre habitué Avatar de scofield
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2006
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2006
    Messages : 179
    Points : 181
    Points
    181
    Par défaut
    je l'ai creé (avec p_huile varchar2 conformement au type)

    Pardone moi , si je passe pour un Boulet mais serait ce comme ca ?begin F('15w50','04/11/2007');end;
    par ce que j'ai testé la fonction de l'EXP et elle n'est pas reconue!

    A term je sais que ca aura l'air de ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    SELECT v.num_compm, v.n_chass, v.num_prest,v.prix_maind, t.des_prest prestation, 
        h.des_huil huile, hp.qt_hp, 
    F(hp.num_hl,c.date_compm)* hp.qt_hp AS prix_huile,
        p.des_piec piece, pp.qt_pm,p.prix_p*pp.qt_pm prix_p
     
    FROM     PREST_VEH v, COMD_PM c, PRESTATION t,
        HUILE_PREST hp,    HUILE h,
        PIECE_PREST pp, PIECE p
     
    WHERE c.num_compm         = v.num_compm
    AND   v.num_prest         = t.num_prest
     
    AND   pp.n_chass     (+)    = v.n_chass
    AND   pp.num_compm     (+)    = v.num_compm
    AND   pp.num_prest     (+)    = v.num_prest
     
    AND   p.ref_piec    (+)    = pp.num_piece
     
    AND   hp.n_chass     (+)    = v.n_chass
    AND   hp.num_compm     (+)    = v.num_compm
    AND   hp.num_prest     (+)    = v.num_prest
     
    AND   h.code_huil    (+)    = hp.num_hl
    j'ai meme honte de n'avoir pas su executer une fonction .
    ps: les valeurs des parametre existe (15w40) dans la table prix_huile

  2. #22
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    non

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select F('15w50','04/11/2007') from dual;

  3. #23
    Membre habitué Avatar de scofield
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2006
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2006
    Messages : 179
    Points : 181
    Points
    181
    Par défaut
    qu'a cela ne tiene! Mais voila que sur la requete le resultat est Vide (colone prix_huile null) alors que la fonction marche tres bien séparement. EST CE QUE les Paramaitres Doivent se Repeter Dans les Jointure d'en Bas?????...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    SELECT v.num_compm, v.n_chass, v.num_prest,v.prix_maind, t.des_prest prestation, 
        h.des_huil huile, hp.qt_hp, 
        (SELECT f_ph(hp.num_hl,c.date_compm) from dual ) * hp.qt_hp AS prix_huile,
        p.des_piec piece, pp.qt_pm,p.prix_p*pp.qt_pm prix_p
     
    FROM     PREST_VEH v, COMD_PM c, PRESTATION t,
        HUILE_PREST hp,    HUILE h,
        PIECE_PREST pp, PIECE p
     
    WHERE c.num_compm         = v.num_compm
    AND   v.num_prest         = t.num_prest
     
    AND   pp.n_chass     (+)    = v.n_chass
    AND   pp.num_compm     (+)    = v.num_compm
    AND   pp.num_prest     (+)    = v.num_prest
     
    AND   p.ref_piec    (+)    = pp.num_piece
     
    AND   hp.n_chass     (+)    = v.n_chass
    AND   hp.num_compm     (+)    = v.num_compm
    AND   hp.num_prest     (+)    = v.num_prest
    AND   h.code_huil    (+)    = hp.num_hl
    MILLE MERCI , ENCORE ET ENCORE

  4. #24
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par orafrance Voir le message
    non

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select F('15w50','04/11/2007') from dual;
    Ben non, pourquoi ? Un accès à la fonction directement marche bien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT v.num_compm, v.n_chass, v.num_prest,v.prix_maind, t.des_prest prestation, 
        h.des_huil huile, hp.qt_hp, 
        f_ph(hp.num_hl, c.date_compm) * hp.qt_hp AS prix_huile,
        p.des_piec piece, pp.qt_pm,p.prix_p*pp.qt_pm prix_p
     FROM 
    ...
    Donne le code de ta fonction, les données et le résultat.
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  5. #25
    Membre habitué Avatar de scofield
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2006
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2006
    Messages : 179
    Points : 181
    Points
    181
    Par défaut
    DESOLE,
    DU RETARD ! j'ai dormis a 9h30 telement j'ai Boufé les interface avec forms tte La nuit.
    Bref , le probleme se situe dans les parametres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "hp.num_hl, c.date_compm"
    il ne sont pas lié au colonnes de la requete principale : je veut dir la sou requete (foction )marche : mais pas avec tout le reste .
    je vais refaire des teste et copier les resultat !
    a tt suite

  6. #26
    Membre habitué Avatar de scofield
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2006
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2006
    Messages : 179
    Points : 181
    Points
    181
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    CREATE FUNCTION f_hp (p_huile IN varchar2, p_date IN date) RETURN number
    IS 
     v_px NUMBER;
    begin
     IF p_huile IS NULL then RETURN NULL; END IF;
     FOR r IN (SELECT prix_hl 
    	FROM PRIX_HUILE
    	WHERE huile = p_huile
    	AND date_p <= p_date
    	ORDER BY date_p DESC)
     LOOP
      v_px := r.prix_hl;
      EXIT;
     END LOOP;
    RETURN v_px;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    SELECT v.num_compm, v.n_chass, v.num_prest,v.prix_maind, t.des_prest prestation, 
        h.des_huil huile, hp.qt_hp, 
        f_ph(hp.num_hl, c.date_compm) * hp.qt_hp AS prix_huile,
        p.des_piec piece, pp.qt_pm,p.prix_p*pp.qt_pm prix_p
     
    FROM     PREST_VEH v, COMD_PM c, PRESTATION t,
        HUILE_PREST hp,    HUILE h,
        PIECE_PREST pp, PIECE p
     
    WHERE c.num_compm         = v.num_compm
    AND   v.num_prest         = t.num_prest
     
    AND   pp.n_chass     (+)    = v.n_chass
    AND   pp.num_compm     (+)    = v.num_compm
    AND   pp.num_prest     (+)    = v.num_prest
     
    AND   p.ref_piec    (+)    = pp.num_piece
     
    AND   hp.n_chass     (+)    = v.n_chass
    AND   hp.num_compm     (+)    = v.num_compm
    AND   hp.num_prest     (+)    = v.num_prest
    AND   h.code_huil    (+)    = hp.num_hl<div style="margin-left:40px">
    </div>
    RESULTAT:

  7. #27
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Donne les données du premier num_compm = 1007-0001
    (date_compm) ainsi que la table prix_huile pour l'huile de la ligne
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  8. #28
    Membre habitué Avatar de scofield
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2006
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2006
    Messages : 179
    Points : 181
    Points
    181
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    INSERT INTO COMD_PM ( NUM_COMPM, NUM_CLI, TYPE_COMPM, DATE_COMPM ) VALUES ( 
    '1007-0001', '6', 'maint',  TO_Date( '10/08/2007 12:00:00 AM', 'MM/DD/YYYY HH:MI:SS AM')); 
     
    INSERT INTO PREST_VEH ( NUM_COMPM, N_CHASS, NUM_PREST, TEMP_P,
    PRIX_MAIND ) VALUES ( 
    '1007-0001', 68465411, 1, '46m', NULL); 
    COMMIT;
     
    INSERT INTO HUILE_PREST ( NUM_COMPM, N_CHASS, NUM_PREST, NUM_HL,
    QT_HP ) VALUES ( 
    '1007-0001', 68465411, 1, '15W40', 2.5); 
    COMMIT;
     
     
    INSERT INTO PRIX_HUILE ( HUILE, DATE_P, PRIX_HL ) VALUES ( 
    '15W40',  TO_Date( '11/04/2007 12:00:00 AM', 'MM/DD/YYYY HH:MI:SS AM'), 20); 
    INSERT INTO PRIX_HUILE ( HUILE, DATE_P, PRIX_HL ) VALUES ( 
    '20W50',  TO_Date( '11/03/2007 12:00:00 AM', 'MM/DD/YYYY HH:MI:SS AM'), 100); 
    INSERT INTO PRIX_HUILE ( HUILE, DATE_P, PRIX_HL ) VALUES ( 
    '20W50',  TO_Date( '10/27/2007 12:00:00 AM', 'MM/DD/YYYY HH:MI:SS AM'), 70); 
    INSERT INTO PRIX_HUILE ( HUILE, DATE_P, PRIX_HL ) VALUES ( 
    '15W40',  TO_Date( '10/10/2007 12:00:00 AM', 'MM/DD/YYYY HH:MI:SS AM'), 50); 
    COMMIT;

  9. #29
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par scofield Voir le message
    donc dans la requête je doit récupérer le prix_huile qui a la date (la Plus proche)=< du jour de la maintenance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    COMD_PM.DATE_COMPM = TO_DATE( '10/08/2007 12:00:00 AM', 'MM/DD/YYYY HH:MI:SS AM'
    = 08/10/2007
     
    INSERT INTO PRIX_HUILE ( HUILE, DATE_P, PRIX_HL ) VALUES ( 
    '15W40',  TO_DATE( '11/04/2007 12:00:00 AM', 'MM/DD/YYYY HH:MI:SS AM'), 20); 
    = 04/11/2007
     
    INSERT INTO PRIX_HUILE ( HUILE, DATE_P, PRIX_HL ) VALUES ( 
    '15W40',  TO_DATE( '10/10/2007 12:00:00 AM', 'MM/DD/YYYY HH:MI:SS AM'), 50); 
    = 10/10/2007
    C'est tout à fait normal, il n'y a pas de prix à une date <= au 08/10/2007

    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  10. #30
    Membre habitué Avatar de scofield
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2006
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2006
    Messages : 179
    Points : 181
    Points
    181
    Par défaut ooooooooooooooooh

    Atend , ne me dit pas que c'est a cause de ca !(Dite moi pas Que c'est pas Vraie)
    je vais changer la date !et si c'est vraie :je Mange du foin jusqu'au jour de la soutenance!

  11. #31
    Membre habitué Avatar de scofield
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2006
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2006
    Messages : 179
    Points : 181
    Points
    181
    Par défaut
    NO COMMENT!

  12. #32
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    On veut une preuve photo dans ce cas
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  13. #33
    Membre habitué Avatar de scofield
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2006
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2006
    Messages : 179
    Points : 181
    Points
    181
    Par défaut J-8...
    Faudrait d'abord en trouver??! : j'habite pas en compagne
    Mais ,ptet que Jozé bové pourai m'en trouver Du bio


    PS:JOCKER Pour Aujourd'hui Puisque c'est Mon Aniverssaire .

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 24
    Dernier message: 24/07/2007, 17h48
  2. [MySQL] avis sur des clés secondaires croisées
    Par Giantrick dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/05/2007, 09h15
  3. faire une jointure sur des clés différentes
    Par phpaide dans le forum Requêtes
    Réponses: 3
    Dernier message: 13/09/2006, 10h16
  4. [Oracle 9.2.0.7] Comment updater sur des clés de partition ?
    Par le_nullos_des_nullos dans le forum Oracle
    Réponses: 3
    Dernier message: 05/02/2006, 00h26
  5. Réponses: 2
    Dernier message: 22/04/2005, 16h44

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