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 :

Requête difficile......


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut Requête difficile......
    Bonjour à tous,

    J'ai cette table:

    PLANIFICATION(id_site INT, date_premiere_visite DATE, nb_visites INT, nb_jours_entre_visites INT)

    Cette table contient pour chaque site, la date de la première visite à effectuer, le nombre de visites à effectuer et le nombre de jours séparant 2 visites consécutives.

    Par exemple, un tuple de la table PLANIFICATION:

    id_site 1
    date_premiere_visite 01/01/2001
    nb_visite 3
    nb_jours_entre_visites 120

    J'ai besoin d'une requête qui me retourne la date de chaque visite à effectuer pour le site 1: à savoir les 01/01/2001, 01/05/2001 et 01/09/2001.

    select date_visite
    ...
    from .........
    ...
    where id_site = 1

    Mais je parviens pas à trouver le code correct...... avec un DATEADD s'est sûr, un select dans le from, mais à part ça....

    Merci de votre aide.
    Avant de poser une question, merci de chercher dans les rubriques suivantes:
    FAQ VB
    Tutoriaux VB
    Recherche avancée sur le forum

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Je ne le sens pas en SQL, puisque le nombre de colonne à sélectionner dépend du contenu de l'une d'entre elles.
    Tu peux aussi tenter une multi-jointure externe avec un nombre de copies supérieur ou égal au maximum du nombre de visite, mais c'est vraiment pas propre, il vaudrait mieux utiliser une procédure stockée
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  3. #3
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    Citation Envoyé par pgibone
    Je ne le sens pas en SQL, puisque le nombre de colonne à sélectionner dépend du contenu de l'une d'entre elles.
    Non, c'est le nombre de tuples qui dépend du contenu de l'une d'entre elle.
    Avant de poser une question, merci de chercher dans les rubriques suivantes:
    FAQ VB
    Tutoriaux VB
    Recherche avancée sur le forum

  4. #4
    Membre actif
    Avatar de MashiMaro
    Profil pro
    Inscrit en
    Février 2003
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 180
    Points : 213
    Points
    213
    Par défaut
    Si tu veux le faire en SQL, il faut maitriser les curseurs dans les procédures stockées. Je crois qu'il n' y a pas d'autre solution.
    MashiMaro

    L'homme sage apprend de ses erreurs, l'homme très sage apprend des erreurs des autres.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2002
    Messages : 332
    Points : 502
    Points
    502
    Par défaut
    Il n'existe pas de requete trop compliquees, seulement des bases de donnees mal structurees.

    2 Tables:

    Site (id_site, etc.)
    Visites (visite_id, id_site, date_visite)

    Si au moment de la prise de donnees, le processus est capable de determiner le nombre de visites et le nombre de jours entre elles, il sera tout autant capable d'inserer les donnees de facon a respecter les regles de la relativite.

    Un de ces regles est la singularite des entites. Un record ne peut contenir deux entites (site et visite) et certainement pas une pluralite de la deuxieme entite.

    Si les donnees s'y trouvent deja, alors il serait temps de creer une table Visites et de faire un petit code VB ou Java (ou Fortran, etc.) afin d'exporter les donnes afin de les rendre relatives.

    Une fois que cette table est creee et populee:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT T2.id_site, T1.date_visite
    FROM Visites T1 INNER JOIN Sites T2 ON T1.id_site = T2.id_site
    WHERE id_site = 1

  6. #6
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    En fait, la table planification que je vous ai présentée est déjà une table calculée: en réalité j'ai 2 tables:
    site (id_site INT , date_mise_en_service DATE,....)
    visites_par_an ( num_annee INT, nb_visites INT)

    exemple de tuple de la table visites_par_an :
    1, 12 durant la 1° année de fonctionnement d'un site -> 12 visites par an
    2, 6 durant la 2° année -> 6 visites par an .....

    Et mon objectif est d'établir la liste des visites (leur date) pour un site donné.

    Merci encore de votre aide.
    Avant de poser une question, merci de chercher dans les rubriques suivantes:
    FAQ VB
    Tutoriaux VB
    Recherche avancée sur le forum

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 790
    Points : 52 813
    Points
    52 813
    Billets dans le blog
    5
    Par défaut
    la solution passe par la modélisation d'une table de date.

    A lire :
    http://sqlpro.developpez.com/Planning/SQL_PLN.html

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  8. #8
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    Merci à tous,

    Je vais tout simplement calculer et insérer dans la BD la date des visites prevues, quand j'insère un nouveau site.

    Au moins tous les calculs seront en VB et non en SQL....
    Avant de poser une question, merci de chercher dans les rubriques suivantes:
    FAQ VB
    Tutoriaux VB
    Recherche avancée sur le forum

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

Discussions similaires

  1. [INGRES] Requête difficile
    Par clecle dans le forum Autres SGBD
    Réponses: 3
    Dernier message: 03/10/2013, 11h51
  2. Une requête difficile
    Par ghir_ana dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 01/11/2011, 11h41
  3. SQL Requête difficile sur BDD
    Par rkade dans le forum Langage SQL
    Réponses: 10
    Dernier message: 28/09/2011, 08h47
  4. Etat avec une case à cocher sur une requête difficile
    Par marcoO dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 10/01/2007, 14h21
  5. [Requête] Difficile (impossible ?) avec des dates
    Par starch dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/04/2004, 11h26

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