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

C++ Discussion :

Qt Requête sur plusieurs tables avec classement par date


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ouvrier
    Inscrit en
    Août 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ouvrier
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 20
    Par défaut Qt Requête sur plusieurs tables avec classement par date
    Bonjour à tous,

    Comme indiquer dans le titre du post, j'aimerai classer par ordre chronologique ( par date ) les données de plusieurs tables pour les lister par la suite ou n'extraire que les données de date à date.
    Je m'explique :

    J'ai plusieurs tables :

    1 - La table des connexions et déconnexion : connexion --> id, date, Mode, identite, ... ( la colonne Mode étant soit Connexion soit Déconnexion ) .
    2 - La table des modifications réalisées : modifications --> id, date_Modif, Description_Modif_Effectuee, ...
    3 - La table des transfères réalisés : transferes --> id, Identite, transfere_Réalisé, ...
    4 - ...
    Et ainsi de suite,

    La colonne commune à toutes les tables de ma base étant, vous l'aurez compris, la DATE ( au format : yyyy-MM-dd HH:mm:ss )

    Donc, avec une requête, que j'avoue je ne sais faire que sur une seule ( je ne sais pas imbriquer toutes les tables ), j'aimerai un résultat du style :

    CONNEXION : 2017-01-01 10:00:00 - DUPONT Jean
    CONNEXION : 2017-01-01 10:05:00 - JAUNE Marie
    MODIFICATION RÉALISÉE : : 2017-01-01 10:10:00 - DUPONT Jean - Changement du mot de passe
    TRANSFERT : : 2017-01-01 10:15:00 - JAUNE Marie - Compte transférer au ....
    AJOUT ...
    SUPPRESSION ...
    DÉCONNEXION : 2017-01-01 10:20:00 - DUPONT Jean
    MODIFICATION RÉALISÉE : : 2017-01-01 10:25:00 - JAUNE Marie - Changement du mot de passe
    DÉCONNEXION : 2017-01-01 10:30:00 - JAUNE Marie
    CONNEXION : 2017-01-02 11:45:00 - DUPONT Jean
    ...

    Pouvez-vous m'aider car niveau jointures, j'ai du mal à comprendre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    ui->plainTextEdit->clear();
     
        QSqlQuery query;
        query.exec("SELECT * FROM `base`.`connexions`");
     
        QString texte;
        while (query.next())
            {
                QString Date = query.value(5).toString(); Date.replace("T", " à "); // Date
                QString Mode = query.value(3).toString();
                QString Nom = query.value(2).toString();
     
                texte = texte + "" + Date + " - " + Mode + " --> : " + Nom + "\n";
             }
    ui->plainTextEdit->appendPlainText(texte);
    J'obtiens ça dans l'immédiat :

    2017-04-11 à 20:15:29 - Connexion --> : DUPONT Jean
    2017-04-11 à 20:17:16 - Déconnexion --> : DUPONT Jean
    2017-04-11 à 20:55:33 - Connexion --> : DUPONT Jean
    2017-04-11 à 20:58:00 - Déconnexion --> : DUPONT Jean

    Et j'aimerai y intercaler tous les éléments des autres tables qui se trouvent dedans.

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Le plus facile est, a priori, de demander directement à ta base de données de trier les résultat en ayant recours au mot clé SORTED BY (nom du champs)... De cette manière, tu obtiendras directement les informations dans l'ordre qui t'intéresse

    Là où les choses risquent de se corser, c'est lorsque tu va essayer de combiner le résultat de différentes requêtes entre elles, surtout si le nombre de champs ou l'ordre dans lequel ils sont obtenu est différent d'une requête à l'autre.

    En effet, comme tu l'as si bien fait remarquer, la seule information à être présente dans chaque table est... l'information de date. Si tu veux tout représenter de manière uniforme, tu dois commencer par t'inquiéter de savoir... sous quelle forme tu va présenter les autres informations récupérées

    Enfin, comme tu utilises de toutes manières Qt, tu devrais peut-être t'intéresser aux possibilités fournies par les classes QxxxModel (QSqlQueryModel, peut-être ) car tu t'approche du point où tu en arrive à utiliser les données pour générer une vue particulière
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Membre averti
    Homme Profil pro
    Ouvrier
    Inscrit en
    Août 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ouvrier
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 20
    Par défaut
    Merci koala01,

    Alors en fait, indirectement les données dans chaque table sont déjà triées par ordre de date.
    Ma difficulté est de combiner les différentes infos des tables.
    Je me demandais si éventuellement je devrai pas passé par la création du table qui regrouperai toutes les infos puis les trier par date ?

  4. #4
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    l'idée serait en gros de passer par un select a as bidule, date from T1 union select b as bidule, date from T2 order by date où a et date sont deux champs de T1 et b et date deux champs de T2. Le resultat aurait deux champs: bidule et date.

    Mais je ne sais pas le traduire dans Qt

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    As-tu moyen de convertir les dates en entier plutôt ?
    Sinon si ton format est fixe comme présenté, vu qu'il s'agit du début de la chaîne tu peux t'en sortir mais ça sera plus lourd en calcul.
    Tu as déjà un tableau avec toutes les données à priori avec plainTextEdit, tu pourrais passer ça dans un simple std::sort qui fait extraction et comparaison de la date.
    Ca reste théorique, n'ayant jamais réellement joué avec Qt.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

Discussions similaires

  1. Requête sur plusieurs tables avec plusieurs WHERE
    Par zengarden dans le forum Requêtes
    Réponses: 16
    Dernier message: 18/03/2015, 10h01
  2. Réponses: 4
    Dernier message: 07/07/2011, 08h51
  3. Réponses: 9
    Dernier message: 09/05/2009, 17h34
  4. Réponses: 1
    Dernier message: 25/04/2009, 11h31
  5. Requête sur plusieurs tables avec DLookup ?
    Par Falcdyr dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 07/05/2008, 08h50

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