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 :

Problème requêtes imbriquées (ou pas ?)


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 116
    Points : 53
    Points
    53
    Par défaut Problème requêtes imbriquées (ou pas ?)
    Bonjour à tous,
    J'ai un petit problème sur une requête et j'espère que vous pourrez m'aider à me dépatouiller de ce mauvais pas !
    J'ai 2 tables :
    1 table message avec :
    idMessage
    locuteurMessage
    dateMessage
    heureMessage
    1 table conversation avec :
    idConversation
    idMessage

    Je veux que ma requête me sorte le lanceur de chaque conversation, donc celui qui a écris le premier dans chaque conversation.
    J'ai essayé plein de trucs (des MIN(dateMessage), MIN(heureMessage), des requêtes imbriquées ... etc) mais rien n'y fait, je ne trouve pas exactement ce que je veux.

    Qu'en pensez-vous ? Comment feriez-vous ?
    Merci d'avance !
    @+

  2. #2
    Membre éprouvé Avatar de Oishiiii
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2009
    Messages : 508
    Points : 1 104
    Points
    1 104
    Par défaut
    Bonsoir,

    Moi j'utiliserai une table dérivée (sous-requête de la clause FROM).
    Si idMessage est un entier auto-incrémenté, on peux considérer que le premier message de la conversation est celui qui a la valeur d'idMessage la plus petite.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT locuteurMessage, idConversation
    FROM message
      NATURAL JOIN (
        SELECT MIN(idMessage) AS idMessage, idConversation
        FROM coversation
        GROUP BY idConversation
      ) AS premMessage
    Si vous voulez vous baser sur la date il faudra faire des deux colonnes dateMessage et heureMessage une seule colonne de type DateTime en utilisant des fonctions mais là ça dépend de votre SGBD.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 116
    Points : 53
    Points
    53
    Par défaut
    Non, malheureusement les idMessage ne sont pas auto-incrémentés car calculés en amont (j'ai des messages que j'ai extraits de fichiers EML (mails) et rangés dans une table comme ils venaient dans une table Messages).

    Voici comment j'obtiens les conversations :
    - je les classe selon le sujet et la date ascendante (requête SQL)
    - selon un certain pas (nombre de jours) et une certaine proximité/distance sémantique (distance de levenstein), je vais considérer un message allant dans la même conversation que le précédent ou pas
    - j'insère mes relations Messages/Conversation (Table Conversation)
    - j'obtiens donc dans ma table conversation :
    idConversation_1 - idMessage_152
    idConversation_1 - idMessage_157
    idConversation_1 - idMessage_165
    idConversation_1 - idMessage_180
    idConversation_2 - idMessage_15
    idConversation_2 - idMessage_19
    ... etc

    Voilà.
    Sinon, je suis en train de regarder la concaténation de mes champs date et heure ... je pense que ça peut le faire ! Mais toute autre idée est la bienvenue !
    Merci et @+

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 116
    Points : 53
    Points
    53
    Par défaut
    c'est vieux, je ne me rappelle plus comment j'ai résolu ça, mais comme il faut que je mette résolu, alors je mets résolu

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

Discussions similaires

  1. [MySQL] Problème requête imbriquée
    Par Little_flower dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 21/08/2007, 18h58
  2. Problème requêtes imbriquées
    Par jean-paul lepetit dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 20/03/2007, 10h32
  3. Problème Requête Imbriquée
    Par PaulPersonne820 dans le forum Hibernate
    Réponses: 1
    Dernier message: 31/01/2007, 22h40
  4. Problème Requête imbriquée
    Par EddieN dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/10/2006, 07h52
  5. Problème Requête UPDATE (ou pas)
    Par mastasushi dans le forum Access
    Réponses: 7
    Dernier message: 03/05/2006, 08h42

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