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 :

Comment attribuer un ordre sur une colonne dans une table


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Août 2014
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 65
    Points : 66
    Points
    66
    Par défaut Comment attribuer un ordre sur une colonne dans une table
    Bonjour,

    J'ai besoins d'aide pour attribuer un ordre à des valeur dans une table. Ma table est la structure suivante:

    visitid heure

    107 12:30:06
    107 13:00:00
    200 15:50:01
    200 15:56:41

    mon but est de rajouter une colonne order afin d'avoir une table avec la structure suivante:


    visitid heure order

    107 12:30:06 1
    107 13:00:00 2
    200 15:50:01 1
    200 15:56:41 2


    mais je ne sais pas comment éditer ma requête de la table pour avoir la structure souhaitée. Pourrais je avoir l'aide de quelqu'un?

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Tout dépend de ton SGBD...
    Si celui-ci prend en charge les fonctions de regoupement analytiques (Norme SQL-2003), c'est très simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT  visitid
        ,   heure
        ,   RANK()  OVER (PARTITION BY visitid ORDER BY heure)  AS  ordre
    FROM    matable
    ;
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre du Club
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Août 2014
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 65
    Points : 66
    Points
    66
    Par défaut
    Merci pour la réponse, j'ai essayé de le mettre dans ma requête sous mysql
    mais cela me met une erreur de syntax Mysql pourtant la syntaxe est bonne. on ne peut pas utiliser rank sous mysql?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT
    H.title,
    H.VisitID,
    substring_index(substring_index(substring_index(substring_index(H.Page2View,'_ppt/',-1),'/',-10),'/',-1),'.',1) as nonslide,
    substring_index(substring_index(substring_index(substring_index(H.Page2View,'_ppt/',-1),'/',-10),'/',-1),'.',-1) as typeslide,
    RANK()  OVER(PARTITION BY H.VisitID ORDER BY H.Timer asc)  AS  ordre,
    cast(from_unixtime(H.timer)as time)as heure,
    cast(from_unixtime(U.timestampDebut)as date) as datepresentation
    FROM history H inner join usersonline U on H.VisitID=U.VisitID
    where U.OwnerId>=100 and U.OwnerId<>105
    and H.Page2View like('/temp/%')

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Les fonction de regroupement fenêtrées sont prises en charge par tous les SGBD évolués.
    Tu as choisi de travailler avec MySQL... Dommage
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre du Club
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Août 2014
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 65
    Points : 66
    Points
    66
    Par défaut
    Cela dit, il y a pas un moyen de contournement en mysql?

  6. #6
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    En même temps, quel est le besoin réel ?

    En effet, ta colonne (calculée) est redondante avec l'ordre de tri applicable sur ta colonne cotenant l'horodatage.
    Donc d'un point de vue conception, c'est une abhération de vouloir créer cette colonne supplémentaire.

    Quelle est sa réelle utilité ?
    On ne jouit bien que de ce qu’on partage.

  7. #7
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Sinon, cette solution peut-être ?

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select m1.visitid, m1.heure, count(*)
    from matable m1
    inner join matable m2 where m2.visitid = m1.visitid and m2.heure <= m1.heure
    group by m1.visitid, m1.heure

    => Tu crées une nouvelle table avec le résultat de cette requête.
    Puis tu drop la table initiale.
    Et tu renomme la nouvelle table avec le nom de la table d'origine.
    On ne jouit bien que de ce qu’on partage.

Discussions similaires

  1. Réponses: 8
    Dernier message: 28/11/2011, 11h40
  2. Réponses: 1
    Dernier message: 21/01/2011, 10h17
  3. Réponses: 8
    Dernier message: 15/06/2010, 16h50
  4. [E-00] Syntaxe pour insérer une ligne ou une colonne dans une feuille
    Par Benjycool dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/02/2009, 09h27
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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