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 :

Selectioner le prochain évènement par section


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 53
    Points : 40
    Points
    40
    Par défaut Selectioner le prochain évènement par section
    Bonjour,

    J'essaye (déjà depuis quelque jours :-( ) de récupérer des événements via ma table tSite_Calendar

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT * FROM tSite_Calendar 
        INNER JOIN tSite_Section ON tSite_Calendar.SID = tSite_Section.ID
        WHERE 
        (tSite_Calendar.StartDate >= GETDATE() AND tSite_Calendar.EndDate <= GETDATE()) OR
        (tSite_Calendar.StartDate >= GETDATE()) OR
        (tSite_Calendar.EndDate >= GETDATE())
    cette query me retourne tout les évènements futurs des différentes sections , j'ai donc pour chacune des mes sections plusieurs évènements.
    Ce que je voudrais c'est l'évènement le plus proche ( un seul donc ) par section
    j'étais parti sur un group by ou un distinct sur ma section mais je galère ..

    Quelqu'un aurait une idée ?

    Merci d'avance
    Gauthier

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    Sans la structure de tes tables et ce que tu veux récupérer exactement comme information cela risque d'être difficile.
    D'abord ta première condition risque de ne pas servir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (tSite_Calendar.StartDate >= GETDATE() AND tSite_Calendar.EndDate <= GETDATE())
    à moins que dans ton calendrier il y ait de EndDate<=StartDate.
    En effet si ta date de début est dans le futur ou le présent comment ta date de fin peut-elle être dans le passé. La seule solution c'est le présent pour startDate et Enddate.

    Je te propose dans un premier temps une requete qui te donne pour chaque section la date de début du prochain évenement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT tSite_Calendar.SID, min(tSite_Calendar.StartDate) as min_start_date FROM tSite_Calendar 
    	INNER JOIN tSite_Section ON tSite_Calendar.SID = tSite_Section.ID
    	WHERE 
    	(tSite_Calendar.StartDate >= GETDATE()) OR
    	(tSite_Calendar.EndDate >= GETDATE())
    group by tSite_Calendar.SID
    Dans cette requête la jointure sur tSite_Section n'est pas utile mais tu peux t'en servir pour rajouter les informations sur la section que tu souhaites dans le select et le group by.

    PS: Quel est ton SGBD?

    A+
    Soazig

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 53
    Points : 40
    Points
    40
    Par défaut
    Désolé, il est vrai que je manque un peut de clarté sur mes tables
    J'ai donc une table tSite_Calendar composée comme suit :
    • ID : uniqueidentifier
    • Title : varchar(50)
    • Description : text
    • StartDate : datetime
    • EndDate : datetime
    • SID : int
    • InsertDate: datetime
    • Location : varchar(100)

    j'ai donc bien un "start date" et une "end date"

    J’ai aussi une jointure avec la table "tSite_Section" qui me sert à avoir le nom de la section ainsi que son ID, elle est composée de :
    • ID : int
    • Section : varchar(20)
    • Email :varchar(250)
    • SystemName : varchar(20)
    • AdministrativeSection : bit
    • AnimationSection : bit

    dans cette query j'ai besoin des champs tSite_Calendar.Title, tSite_Calendar.StartDate, tSite_Calendar.Enddate, tSite_Section.SystemName, tSite_Section.ID
    Et pour compléter mes informations je suis en MSSQL Server 2008

    En espérant avoir été complet
    Merci d’avance,
    Gauthier

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Alors est-ce que ceci répond à ton problème*
    : La sous requete d'alias MS est celle de mon précédent post.
    J'ai rajouté une jointure sur tSite_Calendar pour avoir la ligne de tSiteCalendar où le min est atteint et une jointure sur tSite_Section pour avoir les informations sur la section
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Select C2.Title, C2.StartDate, C2.Enddate, SE.SystemName, SE.ID 
    from 
    (
    	SELECT tSite_Calendar.SID, min(tSite_Calendar.StartDate) AS min_start_date FROM tSite_Calendar C1
    		WHERE 
    		(tSite_Calendar.StartDate >= GETDATE()) OR
    		(tSite_Calendar.EndDate >= GETDATE())
    	GROUP BY tSite_Calendar.SID
    ) MS
    INNEr JOIN tSite_Calendar C2
    on C2.StartDate=MS.min_start_date
    and C2.SID=MS.SID
    INNER JOIN tSite_Section SE ON C2.SID = SE.ID
    a+
    Soazig

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 53
    Points : 40
    Points
    40
    Par défaut
    C'est parfait, c'est bien ce qu'il me fallait
    Merci à vous,
    Gauthier

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

Discussions similaires

  1. [Joomla!] Faire un template différent par section
    Par guy2004 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 16
    Dernier message: 28/12/2010, 09h17
  2. [VBA]Envoi mail par section en automatique
    Par cdumas dans le forum SDK
    Réponses: 10
    Dernier message: 15/03/2007, 17h40
  3. Réponses: 6
    Dernier message: 02/01/2007, 12h16
  4. VC# -Déclencher un évènement par le programme
    Par epc dans le forum Windows Forms
    Réponses: 2
    Dernier message: 06/10/2006, 13h47
  5. Réponses: 6
    Dernier message: 07/05/2006, 16h31

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