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] fichier de sortie et modèle de données


Sujet :

Langage SQL

  1. #1
    Membre actif Avatar de habasque
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Septembre 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 530
    Points : 296
    Points
    296
    Par défaut [Oracle] fichier de sortie et modèle de données
    salut à tous,

    je rencontre actuellement un problème de conception pour extraire des données depuis une base de données Oracle.

    le fichier texte de sortie que je souhaite obtenir est le suivant :
    Pièce jointe 6110

    et mon modèle de données :
    Nom : modeleDonnees.JPG
Affichages : 174
Taille : 37,6 Ko


    le problème est que je n'arrive pas à créer les champs "Capture espèce 1", "Fréquence longueur=5cm"...
    du moins techniquement, je ne vois pas bien comment faire car par le biais d'une jointure, j'obtiens une ligne pour chaque espèce....

    s'il n'existe pas de technique adaptée, alors peut-être que la structure de la base de données est à revoir.

    je suis prêt à recevoir vos avis car là je bloque

    merci d'avance
    jeremie

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Bonsoir,

    Je n'ai pas bien compris votre modèle de données, pourriez-vous SVP le commenter un peu ?

  3. #3
    Membre actif Avatar de habasque
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Septembre 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 530
    Points : 296
    Points
    296
    Par défaut explication du modèle de données
    effectivement, je n'ai pas été très clair. d'autre part, j'ai réduit le modèle aux seules données permettant d'expliquer le problème.

    le projet étudie les activités de bâteaux de pêches ainsi que la description des captures effectuées.

    - la table embarcation représente les différents voyages effectués par un bâteau (date de départ, nom du patron, port de départ, port de retour...)

    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    embarcation - voyage - depart -   patron
    1             1        13/12/2006 joel
    1             2        13/12/2006 joel
    - la table activités identifie décrit les différentes étapes du voyage. un numéro d'activité correspond à : navigation, recherche de bancs de poisson, capture...
    ensuite, chaque activité est décrite par latitude de départ, température de la surface de la mer...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    embarcation - voyage - depart -    activite
    1             1        13/12/2006  1 (navigation)
    1             1        13/12/2006  2 (recherche)
    1             1        13/12/2006  3 (capture)
    - la table espèces capturées identifie les différentes espèces capturées lors d'une activité (en réalité cette table ne concerne que l'activité capture...) et le nombre de poissons par espèce

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    embarcation - voyage - depart -   activite -   code espece - capture
    1             1        13/12/2006 3 (capture)  1              500
    1             1        13/12/2006 3 (capture)  3             1000
    - la table tailles répertorie pour chaque espece, la distribution des poissons selon l'espece et leur longueur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     embarcation - voyage - depart -   activite - code espece   taille quantite
    1             1        13/12/2006 3 (capture)   1           5      50
    1             1        13/12/2006 3 (capture)   1           10    250
    1             1        13/12/2006 3 (capture)   1           12    200
    1             1        13/12/2006 3 (capture)   3           5     150
    1             1        13/12/2006 3 (capture)   3           10    200
    1             1        13/12/2006 3 (capture)   3           12    150
    maintenant je souhaite obtenir toutes les infos du voyage sur la même ligne :

    embarcation - voyage - depart - activite espece taille = 5 taille = 10
    1 1 13/12/2006 3 (capture) 1 50
    50 250

    merci pour votre aide

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Salut,

    Ton modèle est un peu "lourd", car tu constitue les clés de tes tables "filles" avec la clé étrangère de la table mère plus un autre champ, ce qui fait des structures assez volumineuses ...

    D'un autre côté, cela simplfie la requête car tu n'as besoin de lire que la table "Tailles" pour récupérer tes données. Du coup, tu peux faire la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT
      CodeEmbarcation, NumeroVoyage,
      DateDepart, NumeroActivite,
      CodeEspece, Longueurespece,
      SUM(quantite)
    FROM
      Tailles
    GROUP BY
      CodeEmbarcation, NumeroVoyage,
      DateDepart, NumeroActivite,
      CodeEspece, Longueurespece
    Qui te permet de t'approcher du résultat que tu cherches ... je te déconseille de procéder en SQL pour la mise en forme du résultat que tu souhaites au final, puisque c'est juste de la mise en forme de tes données et que ce n'est pas le boulot du SQL (cf Les erreurs les plus fréquentes en SQL, et en particulier 9. Cosmétique...)

    Maintenant, si tu veux t'essayer à ce type de mise en forme, tu peux t'inspirer de ce post : #29

    Bonne fin de WE

  5. #5
    Membre actif Avatar de habasque
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Septembre 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 530
    Points : 296
    Points
    296
    Par défaut modele de données trop lourd ?
    Ton modèle est un peu "lourd", car tu constitue les clés de tes tables "filles" avec la clé étrangère de la table mère plus un autre champ, ce qui fait des structures assez volumineuses
    ok mais je ne vois pas comment l'alléger ?

    à noter que j'ai allégé le modèle pour exposer mon problème et que chaque table possède au moins 5 champs autres que la clé.

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Tu pourrais rajouter un champ dédié à la clé primaire (PK) dans ta table "Embarcation", qui n'a donc pas de signification fonctionnelle.
    Ensuite, pour ta table "Activite", idem, il lui faudrait un champ PK, et pour la clé étrangère vers "Embarcation", un seul suffirait puisque la PK de cette table est constituée d'un champ.
    Et ainsi de suite ...

    Tu eux lire ce passage du cours Merise de SQLPro sur le choix de la clé : 2.5. Clef d'une entité (la base de la relation)

  7. #7
    Membre actif Avatar de habasque
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Septembre 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 530
    Points : 296
    Points
    296
    Par défaut validation du modèle de données
    effectivement, mon modèle actuel ne respecte pas les normes Merise.
    je vais ajouter une clé numérique sans signification fonctionnelle dans chaque table.

    existe t-il des outils de validation de modèle de données qui vérifient la 3eme forme normale, les préconisations MERISE en général ?

    d'autre part, que préconises-tu pour la mise en forme de données ?

    --> XO, merci pour toutes tes indications

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    De rien

    Citation Envoyé par habasque
    existe t-il des outils de validation de modèle de données qui vérifient la 3eme forme normale, les préconisations MERISE en général ?
    Je ne sais pas, mais pour ça, comme on sort du cadre de langage SQL, n'hésite pas à faire des recherches sur le forum Conception (ou sur le sous forum Merise) et à poser ta question si tu ne trouves rien

  9. #9
    Membre actif Avatar de habasque
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Septembre 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 530
    Points : 296
    Points
    296
    Par défaut Cosmétique - mise en forme du résultat d'une requête
    salut à tous,

    je rencontre un problème de mise en forme du résultat d'une requête que voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     embarcation - voyage - depart -   activite - code espece   taille quantite
    1             1        13/12/2006 3 (capture)   1           5      50
    1             1        13/12/2006 3 (capture)   1           10    250
    1             1        13/12/2006 3 (capture)   1           12    200
    1             1        13/12/2006 3 (capture)   3           5     150
    1             1        13/12/2006 3 (capture)   3           10    200
    1             1        13/12/2006 3 (capture)   3           12    150
    maintenant je souhaite obtenir toutes les infos du voyage sur la même ligne :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     embarcation - voyage - depart -   activite   -    total espece 1  -  qte espece 1 taille = 5  - qte espece 1 taille = 10
    1             1        13/12/2006  3 (capture)           500              50                                      250
    il n'est pas recommandé d'utiliser SQL pour cela mais je ne vois pas quel outil utiliser pour résoudre mon problème...

    merci pour votre aide

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Tu peux utiliser n'importe quel langage procédural, s'il est capable de manipuler des tableaux et de créer des fichiers texte.

    Si tu es sous Oracle, le plus simple est d'utiliser le PL/SQL

  11. #11
    Membre actif Avatar de habasque
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Septembre 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 530
    Points : 296
    Points
    296
    Par défaut Pl Sql
    ok c'est noté pour PL/SQL
    cependant, je dois créer ce fichier pour demain et cela s'annonce rude d'apprendre PL/SQL en quelques heures...
    si jamais quelqu'un de bien calé dans ce domaine lit ce post et peut me fi
    ler un coup de main...dans le cas contraire, je vais aller me préparer 2-3 litres de café...

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Le PL, c'était un exemple, tu ne connais pas de langage procédural ? Java, C, C#, VB.Net, Delphi, PHP, etc. peuvent faire l'affaire, il suffit que tu te connectes à la BDD, que tu exécutes la requête et que tu sors un fichier texte.

    Pour PL/SQL, tu trouveras le cours Developpez : Guide PL/SQL Oracle

    Pour la gestion de fichier en PL (côté serveur), c'est le Chapitre 8 qui t'intéressera.

  13. #13
    Membre actif Avatar de habasque
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Septembre 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 530
    Points : 296
    Points
    296
    Par défaut jointures externes
    oui bien sûr.
    par contre, je me suis dis que pour obtenir la vue décrite plus haut, je peux créer une vue pour chaque espèce, chaque taille...: une vue pour les captures de l'espece 1, une vue pour les poissons de taille 5 de l'espece 1...
    puis faire des jointures externes sur chaque voyage du bateau.
    c'est une solution qui me permettra d'utiliser uniquement du SQL et de sortir un fichier texte directement.
    par contre, cela risque d´être coûteux en temps de traitement...

Discussions similaires

  1. [tomcat]fichiers de sorties
    Par agougeon dans le forum Tomcat et TomEE
    Réponses: 7
    Dernier message: 02/10/2005, 13h04
  2. Réponses: 4
    Dernier message: 28/09/2005, 15h04
  3. Réponses: 11
    Dernier message: 30/08/2005, 14h47
  4. Fichier de sortie
    Par flzox dans le forum Editeurs / Outils
    Réponses: 2
    Dernier message: 09/07/2005, 09h59
  5. Réponses: 4
    Dernier message: 22/11/2004, 19h29

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