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

MySQL Discussion :

Champs incrémenté dans une vue


Sujet :

MySQL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 43
    Par défaut Champs incrémenté dans une vue
    Bonjour,

    Je cherche à crée un champs incrémenté dans vue.

    Je m'explique:

    J'ai une vue qui que je construit comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    CREATE view ma_vue as SELECT champs1, champs2 FROM table1
    UNION ALL
    SELECT champs1, champs2 FROM table2
    J'obtiens donc ce résultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    +-----------+------------+
    | Champs 1 | Champs 2 |
    +-------------------------+
    | toto          | tata         |
    | titi            | tutu         |
    | tete          | tyty         |
    +-------------------------+
    Et le résultat que je souhaite obtenir est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    +------+-----------+------------+
    | Num | Champs 1 | Champs 2 |
    +------+-------------------------+
    | 1      | toto          | tata         |
    | 2      | titi            | tutu         |
    | 3      | tete          | tyty         |
    +-----+-------------+-----------+
    Merci par avance de vos réponses

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 059
    Par défaut
    Bonjour,

    Peut-être en t'inspirant de cet exemple dans la FAQ .
    A consulter avant de poster...

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 43
    Par défaut
    Oui je connais je l'ai lu et relu la FAQ

    Mais dans une vue c'est impossible d'utiliser des variables....


  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut
    quel est le critère d'ordre selon lequel tu donnes tes numéros de ligne ? A défaut, quel serait le critère d'unicité ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 43
    Par défaut
    Je voudrais que chaque ligne de la vue soit "numéroté"...

    comme ceci:

    id | champs1 | champs2
    1 | xxx | xxxxx
    2 | xxx | xxxxx
    3 | xxx | xxxxx
    4 | xxx | xxxxx
    5 | xxx | xxxxx
    6 | xxx | xxxxx
    7 | xxx | xxxxx
    etc..

    Le critère d'ordre c'est simple: n+1 à chaque fois
    Et il faut que ce numéro soit unique dans la vue....

  6. #6
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut
    Je dois générer le numéro à partir de tes champs1, champs2, etc. Il me faut donc un critère d'ordre, même arbitraire, avec lequel il n'y a pas d'ex-aequo. Il y a des clés primaires dans tes tables ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 43
    Par défaut
    Oui il y a des clefs primaires de type bigint.

    Voici la table 1

    vid bigint(10) [CLEF PRIM]
    uid int(5)
    filename varchar(250)
    title varchar(255)
    Voici la table 2

    dvid bigint(10) [CLEF PRIM]
    uid int(5)
    lien longtext
    title varchar(255)

    Pour l'instant voilà ce que j'ai fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    CREATE VIEW ressources AS
    SELECT CONCAT('d',dvid) AS r_id , lien , uid, title from Table2
    UNION ALL
    SELECT CONCAT('v',vid) AS r_id, filename, uid, title from Table1;
    Ce qui me permet de récupérer des ID uniques sous la forme:
    v1
    v2
    v3
    d1
    d2
    d3
    etc..

    Mais bon j'aurais préférer des entiers... Je ne trouve pas cette solution très élégante.

  8. #8
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut
    Je te propose la solution suivante, en supposant que l'ordre t'est indifférent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CREATE VIEW ressources AS
    SELECT COUNT(*) AS num, T1.lien , T1.uid, T1.title 
    FROM (
        SELECT -dvid AS r_id , lien , uid, title FROM Table2
        UNION ALL
        SELECT vid AS r_id, filename, uid, title FROM Table1
      ) T1
      INNER JOIN (
        SELECT -dvid AS r_id , lien , uid, title FROM Table2
        UNION ALL
        SELECT vid AS r_id, filename, uid, title FROM Table1
    ) T2 ON T1.r_id >= T2.r_id
    GROUP BY T1.lien , T1.uid, T1.title 
    ORDER BY num
    Mais bon j'aurais préférer des entiers... Je ne trouve pas cette solution très élégante.
    Comme tu vois, j'ai passé les id de table2 en négatifs...

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 43
    Par défaut
    Parfait

    Merci beaucoup...

    Passer les id en négatifs... Je n'y aurais jamais pensé....

    Merci

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

Discussions similaires

  1. [AC-2003] Créer un champ incrémenté dans une requête
    Par oplaut dans le forum Access
    Réponses: 2
    Dernier message: 22/02/2010, 18h30
  2. Création d'un champ "auto-incrémenté" dans une vue
    Par damnn dans le forum Développement
    Réponses: 8
    Dernier message: 20/10/2009, 14h50
  3. Comment obtenir un champs auto incrémenté dans une table DBase IV ?
    Par souminet dans le forum Bases de données
    Réponses: 1
    Dernier message: 11/12/2007, 13h55
  4. Champ conditionnel dans une vue
    Par mfmf99 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 26/09/2006, 22h49
  5. Champs virtuel auto incrémenté dans une vue
    Par berceker united dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 19/06/2006, 14h33

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