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 :

requete SQL complexe


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de PAYASS59
    Homme Profil pro
    Inscrit en
    Février 2005
    Messages
    755
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2005
    Messages : 755
    Par défaut requete SQL complexe
    Bonjour,

    voila mon souci :

    j'ai une table historique :

    id_historique, id_obj, date_debut,date_fin

    exemple :

    1,85,05/01/2004,18/07/2006
    2,85,18/07/2006,25/09/2006
    3,85,25/09/2006,NULL

    Le but est de faire un select qui retourne autant de ligne que de nombres d'années différentes des mouvements.
    Pour l'exemple précédent cela donnerait :

    85,2004
    85,2005
    85,2006
    85,2007

    Il est possible qu'un objet ait qu'une ligne :

    5,65,06/08/2004,25/10/2006

    donc : 65,2004
    65,2006

    Il est possible qu'un objet ait qu'une ligne :

    15,80,06/08/2004,NULL

    donc : 15,80,2004
    15,80,2005
    15,80,2006
    15,80,2007


    merci d'avance pour vos réponses

  2. #2
    Membre éprouvé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 126
    Par défaut
    si tu pouvais être plus clair dans tes exemples,

    quelle ligne dans la table origine, quel résultat

    d'où vient 85,2005 ?

  3. #3
    Membre éclairé Avatar de PAYASS59
    Homme Profil pro
    Inscrit en
    Février 2005
    Messages
    755
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2005
    Messages : 755
    Par défaut
    85 c l'identifiant de la table historique...

    2005 c'est ce que j'aimerai récupérer de la date

  4. #4
    Membre éclairé Avatar de PAYASS59
    Homme Profil pro
    Inscrit en
    Février 2005
    Messages
    755
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2005
    Messages : 755
    Par défaut
    pardon 85 c'est l'identifiant de l'objet

  5. #5
    Membre éclairé Avatar de PAYASS59
    Homme Profil pro
    Inscrit en
    Février 2005
    Messages
    755
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2005
    Messages : 755
    Par défaut
    j'ai enlevé le AS dans la nomination des tables mais j'ai une erreur , il ne connait pas la table année
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SQL> SELECT  h.id_obj,a.annee
      2  FROM historique h
      3  INNER JOIN
      4  annee a
      5  ON  EXTRACT(YEAR FROM h.date_debut) >= a.annee
      6  AND EXTRACT(YEAR FROM COALESCE(h.date_fin, h.date_debut)) <= a.annee
      7  GROUP BY h.id_obj,a.annee
      8  ;
    annee a
    *
    ERREUR à la ligne 4 :
    ORA-00942: table or view does not exist

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 135
    Par défaut
    Une requête SQL ne pouvant retourner des données qui n'existent pas dans la base, il te faut d'abord impérativement un table ANNEES(ANNEE smallint), qui liste les années à retourner.

    Ensuite, la requête est relativement simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT  h.id_obj
        ,   a.annee
    FROM    historique  AS h
        INNER JOIN
            annees   AS a
            ON  EXTRACT(YEAR FROM h.date_debut) >= a.annee
            AND EXTRACT(YEAR FROM COALESCE(h.date_fin, h.date_debut)) <= a.annee
    GROUP BY
            h.id_obj
        ,   a.annee
    ;
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  7. #7
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 135
    Par défaut
    Citation Envoyé par al1_24
    il te faut d'abord impérativement un table ANNEES(ANNEE smallint), qui liste les années à retourner.
    Citation Envoyé par weedman59
    j'ai une erreur , il ne connait pas la table année
    En effet, il faut la créer
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  8. #8
    Membre éclairé Avatar de PAYASS59
    Homme Profil pro
    Inscrit en
    Février 2005
    Messages
    755
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2005
    Messages : 755
    Par défaut
    ok merci je regarde ca tout à l'heure ou demain matin

    merci

  9. #9
    Membre éclairé Avatar de PAYASS59
    Homme Profil pro
    Inscrit en
    Février 2005
    Messages
    755
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2005
    Messages : 755
    Par défaut
    par contre je ne peux pas creer physiquement cette table car je suis sur un infocentre qui tourne sur BO

  10. #10
    Membre éprouvé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 126
    Par défaut
    tu peux utiliser une table temporaire

Discussions similaires

  1. requete sql complexe
    Par susimido dans le forum Langage SQL
    Réponses: 1
    Dernier message: 23/04/2007, 17h01
  2. requete SQL complexe!
    Par cedlannoy dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/03/2007, 20h45
  3. requete sql complexe, que faire: 2 sql imbriques ou fonction date?
    Par Aliveli dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 22/06/2006, 20h20
  4. Requete SQL complexe
    Par isa21493 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 28/02/2006, 16h43
  5. Requete sql complexe
    Par ekinoxe dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 11/01/2006, 16h16

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