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

MS SQL Server Discussion :

HELP : Filtre dans un select


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 4
    Par défaut HELP : Filtre dans un select
    Bonjour tout le monde. Ceci est mon premier post ici. Et j'ai besoin d'aide !!!!!

    Voici mon problème : j'effectue une jointure sur deux tables comme suit. Il s'agit de posts dans un forum. Maintenant, je voudrais récupérer le post (EXCHANGE_ROOMS_SUBJECTS) le plus récent pour CHAQUE discussion (EXCHANGE_ROOMS) comme dans le Résultat souhaité. Comment puis-je y parvenir à partir d'une requête SQL ? D'avance, merci beaucoup pour votre aide !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT
    	EXCHANGE_ROOMS_SUBJECTS.id_exchange_room, EXCHANGE_ROOMS.label, EXCHANGE_ROOMS_SUBJECTS.id AS id_exchange_room_subject_id, EXCHANGE_ROOMS_SUBJECTS.title, EXCHANGE_ROOMS_SUBJECTS.time_stamp
     
    FROM EXCHANGE_ROOMS
     
    INNER JOIN EXCHANGE_ROOMS_SUBJECTS
    	ON EXCHANGE_ROOMS.id = EXCHANGE_ROOMS_SUBJECTS.id_exchange_room
    Résultat obtenu :
    4 Wella 3 Topic 3 2007-09-11 18:34:31.000
    8 Schwarzkopf 7 Topic 7 2007-07-20 17:40:14.000
    10 Test 67 zz 2007-09-06 10:22:09.000
    16 Ma rubrique 68 zz 2007-09-07 17:56:58.000
    21 Competition monitoring 69 zz 2007-09-07 16:28:06.000
    21 Competition monitoring 70 zz 2007-09-07 09:46:39.000
    16 Ma rubrique 75 aa 2007-09-07 11:42:56.000
    8 Schwarzkopf 80 qq 2007-09-07 16:23:54.000
    4 Wella 85 Test4 2007-09-10 19:13:41.000
    4 Wella 86 Test5 2007-09-10 19:18:32.000
    4 Wella 87 Test 2007-09-10 21:31:46.000
    4 Wella 88 Test 2007-09-10 21:33:00.000
    4 Wella 89 Test other language 2007-09-10 22:26:23.000
    4 Wella 90 FCKeditor Test 2007-09-10 22:30:15.000

    Résultat souhaité :
    8 Schwarzkopf 7 Topic 7 2007-07-20 17:40:14.000
    10 Test 67 zz 2007-09-06 10:22:09.000
    21 Competition monitoring 70 zz 2007-09-07 09:46:39.000
    16 Ma rubrique 75 aa 2007-09-07 11:42:56.000
    4 Wella 85 Test4 2007-09-10 19:13:41.000

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2007
    Messages : 82
    Par défaut
    Il faut que tu agrège ta requête avec un group by.

    Je te conseille de faire une requête dabord sur EXCHANGE_ROOMS_SUBJECTS
    qui ne récupère que la date max pour chaque EXCHANGE_ROOMS_SUBJECTS.id_exchange_room.

    Du genre :
    SELECT EXCHANGE_ROOMS_SUBJECTS.id_exchange_room,EXCHANGE_ROOMS_SUBJECTS.id AS id_exchange_room_subject_id, EXCHANGE_ROOMS_SUBJECTS.title,max(EXCHANGE_ROOMS_SUBJECTS.time_stamp)
    FROM EXCHANGE_ROOMS_SUBJECTS
    GROUP BY EXCHANGE_ROOMS_SUBJECTS.id_exchange_room,EXCHANGE_ROOMS_SUBJECTS.id AS id_exchange_room_subject_id, EXCHANGE_ROOMS_SUBJECTS.title

    Puis de joindre cette requête à l'autre table
    du genre :

    SELECT q.id_exchange_room, EXCHANGE_ROOMS.label, q.id AS id_exchange_room_subject_id, q.title, q.time_stamp
    FROM
    EXCHANGE_ROOMS
    INNER JOIN
    (SELECT EXCHANGE_ROOMS_SUBJECTS.id_exchange_room,EXCHANGE_ROOMS_SUBJECTS.id AS id_exchange_room_subject_id, EXCHANGE_ROOMS_SUBJECTS.title,max(EXCHANGE_ROOMS_SUBJECTS.time_stamp)
    FROM EXCHANGE_ROOMS_SUBJECTS
    GROUP BY EXCHANGE_ROOMS_SUBJECTS.id_exchange_room,EXCHANGE_ROOMS_SUBJECTS.id AS id_exchange_room_subject_id, EXCHANGE_ROOMS_SUBJECTS.title) as Q
    ON EXCHANGE_ROOMS.id = Q.id_exchange_room


    Si ça marche du 1er coup je suis vraiment un BOSS
    mais sinon tu seras surment pas loin

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 4
    Par défaut
    Merci bmontandon.

    J'ai essayé ton code et il s'est effectivement passé quelque chose même si ce n'est pas exactement ce que j'attendais. Je n'ai pas vraiment le temps de détailler maintenant donc je reviendrais mais c'était surtout pour te remercier !

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/08/2013, 17h54
  2. selection formulaire et filtre dans état
    Par nico62370 dans le forum IHM
    Réponses: 5
    Dernier message: 02/12/2008, 18h14
  3. HELP - filtre dans formulaire
    Par gregius dans le forum IHM
    Réponses: 3
    Dernier message: 08/12/2005, 11h22
  4. [Sybase] Select dans une select loop en C
    Par Claudio dans le forum Sybase
    Réponses: 2
    Dernier message: 29/04/2003, 18h06
  5. Probleme de filtre dans bdd
    Par scorpiwolf dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/06/2002, 10h43

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