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

Outils MySQL Discussion :

Transformation d'affichage et colonne virtuelle (virtualité) dans phpmyadmin [MySQL-5.7]


Sujet :

Outils MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    sans
    Inscrit en
    Juillet 2019
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Juillet 2019
    Messages : 141
    Par défaut Transformation d'affichage et colonne virtuelle (virtualité) dans phpmyadmin
    Bonjour,

    pas certain d'être sur le bon forum (maintenance mysql plutôt qu'outils mysql ?) ...
    Voici mon souci :

    Dans une table, je veux créer une colonne qui reprends la valeur d'une autre colonne de la table (un peu comme si je voulais une colonne qui fait la somme de des valeurs de deux autres colonnes, mais en moins simple car je travaille sur une string et une fonction).
    Voyons ce que j'ai tenté :

    j'ai une colonne A (varchar) contenant une chaine "patience est longueur de temps"
    je veux une colonne B contenant ( -- ou affichant --, à voir plus tard) une sous-chaîne de A qui serait substring("patience est longueur de temps",'1',expression)
    expression: devrait être j'imagine une autre fonction renvoyant comme valeur l'index de l'espace (ou du premier espace ici puisque plusieurs) dans la chaîne - 1.
    En dur j'écrirais substring("patience est longueur de temps",'1','8') afin d'obtenir ce que je souhaite, c'est à dire 'patience' (heum).
    Alors dans le champ virtualité de la structure de ma table: j'ai sélectionné STORED (car je préfère storer si possible) avec comme valeur `A` (nom du champ dont je veux traiter la valeur.
    dans le champ Type MIMI j'ai mis text/plain et dans Transformation d'affichage j'ai mis Substring (fonction mysql proposée) et dans Option de transformation d'affichage je bloque. Si je mets '1','8' ça marche. Mais c'est pas le but
    Pas le but car je n'aurais un résultat similaire (correct) que dans le cas d'un insert où A prendra la valeur "craquage neuronal fort probable". Que si le premier mot est de longueur 8.

    J'attends que quand je fait INSERT INTO matable (`A`) VALUES ('help est un mot anglais qui signifie un peu au secours') automatiquement si je parcoure la matable, j'ai bien:
    3 enregistrements avec en colonne A:
    patience est longueur de temps
    craquage neuronal fort probable
    help est un mot anglais qui signifie un peu au secours

    et en colonne B:
    patience
    craquage
    help


    Alors quels sont les paramétrages corrects ? Est-ce que j'étais sur la bonne voie ? Dois-je aussi utiliser les champs "Transformation de Saisie" et "Options de transformation de saisie" ? Comment passer l'index de l'espace en paramètre dynamiquement, etc ...
    Je nage. Merci de m'expliquer.

  2. #2
    Membre éclairé
    Homme Profil pro
    sans
    Inscrit en
    Juillet 2019
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Juillet 2019
    Messages : 141
    Par défaut Peut-être ai-je mal posé le problème ...
    Ou : Comment obtenir pour valeur dans 'B' une sous-chaîne de la valeur dans 'A' ? Le tout au niveau de la structure de la table puisque le champ "Virtualité" de la structure me permet de définir quelle colonne de la table afficher dans cette colonne que je tente de paramétrer ('B').
    Et en l'occurrence j'ai besoin de récupérer le premier mot de 'A' -> dans 'B' (selon un délimiteur ici l'espace, mais possiblement un tiret).
    Personne ?

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 623
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Voici : select substring_index ("patience et longueur de temps", " ", 1).

    Notez : patience ET longueur de temps et non pas patience est longueur de temps

  4. #4
    Membre éclairé
    Homme Profil pro
    sans
    Inscrit en
    Juillet 2019
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Juillet 2019
    Messages : 141
    Par défaut
    oui merci j'étais en effet sur la piste de substring_index. Bien, mais mon souci, c'est de renseigner ça dans la structure de la table, en paramétrant les colonnes 'Virtualité', 'Transformation d'affichage' , 'Option de transformation d'affichage' (voir même si nécessaire 'Transformation de saisie' , 'Option de transformation de saisie').
    Je cherche comment ça fonctionne et la doc est ridiculement pauvre sur le sujet (la plupart des docs ne faisant que décrire avec des mots ce qu'on voit affiché avec nos yeux ...), sans expliquer ni donner d'exemple sur comment ça fonctionne ...
    Mon problème, c'est dans la structure de la table, avec les possibilités qu'offrent ces champs virtualité et transformation

    NB: ha !!! je me disais aussi ! je l'ai toujours représenté avec ET, mais récemment je me suis fait la réflexion que ET ne voulez rien dire, vu que j'ai toujours entendu dire (grand-père) "patience [et] longueur de temps" puis fin de la phrase, comme s'il manquait quelque chose pour que ça prenne sens, ou comme si en fait il fallait comprendre [est]

  5. #5
    Membre éclairé
    Homme Profil pro
    sans
    Inscrit en
    Juillet 2019
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Juillet 2019
    Messages : 141
    Par défaut
    en effet
    Patience et longueur de temps font plus que force ni que rage.
    Jean de la Fontaine (connais même pas mes classiques)

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 623
    Billets dans le blog
    10
    Par défaut
    Ce n'est pas très clair. Je reformule donc pour voir si j'ai compris le besoin :

    Une table contient différentes colonnes permettant de paramétrer le découpage d'un contenu d'une valeur source pour la transformer en valeur cible.

    Si c'est bien ça, il faudra que vous communiquiez
    • la structure de la table de paramétrage (idéalement le script "CREATE TABLE") ;
    • un extrait du contenu (quelques lignes de cette table de paramétrage) ;:
    • un extrait du jeu de données (les valeurs sources à découper) ;
    • quelques exemples de résultats attendus (les valeurs cibles obtenues) et ce, pour plusieurs cas de paramétrage de la première table.

  7. #7
    Membre éclairé
    Homme Profil pro
    sans
    Inscrit en
    Juillet 2019
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Juillet 2019
    Messages : 141
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    Une table contient différentes colonnes permettant de paramétrer le découpage d'un contenu d'une valeur source pour la transformer en valeur cible.
    non c'est pas ça, cependant je vais préparer ce que vous demandez ou approximativement, un moment je reviens poster ...
    Visiblement vous n'utilisez pas les champs virtuality et phpmyadmin (virtualité pourtant à mon avis des pas une fonctionnalité propre à phpmyadmin, ça m'interloque de rien trouver sur le sujet).

  8. #8
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 899
    Par défaut
    Salut à tous.

    Maitre Capelovici (alias Escartefigue) aurait pu citer l'origine de cette phrase, à savoir la fable la fontaine, le lion et le rat.

    Citation Envoyé par Dens1
    Peut-être aussi que le Comment est plus important que le Pourquoi ?
    Le pourquoi et le comment sont deux notions différentes n'ayant aucune relation entre eux.
    Ce n'est pas le comment qui conditionne le pourquoi, ni l'effet agissant sur la cause.
    Le pourquoi est la signification ou encore la raison à cela.
    Le comment n'est que le moyen d'y parvenir.

    Il n'existe pas une seule solution comme réponse à une question posée.
    Mais cette réponse ne justifie pas la signification de la question posée.

    En ce qui me concerne, je mets toujours les normes après celles du respect des fonctionnalités et de la performance.
    Tant que je peux respecter les normes, je le fais, mais pas à outrances.
    La norme n'est pas une finalité, mais juste un moyen de ce simplifier la vie.

    Je me rappelle d'une application écrite en cobol, qui durait plus de quatre heures à l'exécution.
    Son développeur respectait une façon de programmer, qui était de toute évidence basique.
    Le même traitement, après mon intervention, ne durait plus que cinq minutes.

    A votre avis, que devons-nous choisir ? La performance ou le respect des normes ?
    Je rappelle que le temps CPU est facturé dans les grands centres informatiques.
    Et la performance, c'est aussi de l'argent que l'on peut utiliser par ailleurs.

    Citation Envoyé par Dens1
    À ces questions je dis que le comment n'est pas pertinent
    Si un problème est mal posé, la solution le sera d'autant plus.
    Le comment est tout aussi important que le pourquoi, mais d'une autre nature.
    Le but est de trouver le juste équilibre entre la finalité et les moyens à mettre en œuvre.

    Citation Envoyé par Dens1
    Je fis un lapsus lors du pénultième paragraphe, à la phrase
    Il est surprenant de confondre le pourquoi avec le comment.
    Voire, comme je l'ai dit, ci-dessus, confondre les moyens et la finalité.

    Citation Envoyé par Dens1
    À quoi sert la fonctionnalité "Virtualité" paramétrable dans la structure de colonne d'une table ?
    Personnellement, je ne m'en sers pas car je n'en ai aucune utilité.

    Une base de données est une collection de données dont le but est d'y accéder le plus rapidement possible.
    Pour ce qui est du traitement, cela est du ressort du langage utilisé.
    Si le SGBDR permet quelques digressions, sans que cela nuise aux normes et surtout aux performances, pourquoi pas.
    Le mieux est de faire simple !

    Citation Envoyé par SQLPRPO
    MySQL est un SGBD peu relationnel et mal conçu.
    Est-ce la faute à l'outil si l'administrateur ne sait pas s'en servir ?
    Il est plus facile de critiquer que de se mettre à l'ouvrage pour trouver une solution.

    Je sais, nous connaissons tous votre aversion pour mysql.

    Citation Envoyé par SQLPRPO
    Que votre redondance se fasse de manière simple (pas de transformation des données, copie de l'info) ou par calcul, c'est une redondance !
    Qu'est ce que la redondance ?
    --> Caractère de ce qui apporte une information déjà donnée sous une autre forme.

    S'il s'agit d'une répétition, sans que cela change quoi que ce soit à sa signification, oui, c'est inutile.

    Mais comme je le disais ci-dessus, parfois, il faut dégrader la base de données, créer des redondances, juste pour des questions de performances.
    Cela se justifie !

    Citation Envoyé par Dens1
    Du coup, Qu'est ce que je pourrais utiliser de mieux conçu et au niveau de mes connaissances actuelles, comme SGBD
    Cela dépend du la finalité de votre projet.

    Pour acheter une baguette de pain, à cent mètres près de chez vous, avez-vous besoin d'une Ferrari, d'un SUV, d'une petite voiture, d'un vélo ou tout simplement une paire de chaussure ?
    Je ne sais pas répondre à cette question car elle dépend de ce que chacun est près à faire pour obtenir ce dont il recherche.
    Pour ma part, et cela va faire plaisir à Escartefigue, le mieux est d'appliquer le principe du Rasoir d'Ockham.

    En effet, pour extraire le premier mot d'une chaîne de caractères, il faut utiliser la fonction "substring_index().
    Mais je ne préconise pas l'usage de la création de colonnes à partir d'autres colonnes.
    Vous aurez un problème de maintenance, mais surtout un problème de performance.

    Citation Envoyé par Dens1
    j'attends une réponse fructueuse à la première question (et j'ai bien compris que je bidouillais actuellement, c'est peut-être une forme de destinée chez moi).
    Vous n'êtes pas le seul à faire de la bidouille. Il n'y a rien de répréhensible à cela.
    Le problème est de trouver le juste milieu entre la finalité, d'avec le respect des normes.
    J'ai toujours gardé à l'esprit qu'en respectant la fonctionnalité, je ne devais pas négliger les performances, même s'il faut négliger les normes.


    Voici un exemple avec une vue :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    --------------
    START TRANSACTION
    --------------
     
    --------------
    set session collation_connection = "latin1_general_ci"
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE IF NOT EXISTS `base`
            DEFAULT CHARACTER SET `latin1`
            DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS `test`
    --------------
     
    --------------
    CREATE TABLE `test`
    (  `id`     smallint unsigned NOT NULL auto_increment primary key,
       `col_A`  varchar(255)      NOT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    create view `vue` (`id`,`col_A`,`col_B`) as
      select  `id`,
              `col_A`,
              SUBSTRING_INDEX(`col_A`,' ',1) as col_B
        from  `test`
    --------------
     
    --------------
    insert into `test` (`col_A`) values
      ('Patience ET longueur de temps'),
      ('Craquage neuronal probable'),
      ('Help est un mot anglais qui blahblah')
    --------------
     
    --------------
    select * from `test`
    --------------
     
    +----+--------------------------------------+
    | id | col_A                                |
    +----+--------------------------------------+
    |  1 | Patience ET longueur de temps        |
    |  2 | Craquage neuronal probable           |
    |  3 | Help est un mot anglais qui blahblah |
    +----+--------------------------------------+
    --------------
    select * from `vue`
    --------------
     
    +----+--------------------------------------+----------+
    | id | col_A                                | col_B    |
    +----+--------------------------------------+----------+
    |  1 | Patience ET longueur de temps        | Patience |
    |  2 | Craquage neuronal probable           | Craquage |
    |  3 | Help est un mot anglais qui blahblah | Help     |
    +----+--------------------------------------+----------+
    --------------
    COMMIT
    --------------
     
    Appuyez sur une touche pour continuer...
    @+

  9. #9
    Membre éclairé
    Homme Profil pro
    sans
    Inscrit en
    Juillet 2019
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Juillet 2019
    Messages : 141
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    Il est surprenant de confondre le pourquoi avec le comment.
    Certes, mais un lapsus surprend toujours un peu.
    Ce que j'ai tenté de dire c'est que, du moins parfois, le pourquoi importe peu. Cela dit, aller chercher sa baguette en Ferrari, ça fait chère la baguette (ne pas s'émouvoir que le monde parte en couille ...). Je préconise une paire de chaussure (allez bon, de marque même, pour ceux qui savent plus faire simple).

    Merci pour l'exemple, donc col_B, "Et j'y aurai accès n'importe où dans le monde" ? (un "Combattant" de la Liberté - Casino Royal)
    Je veux dire, que la vue persiste, et que je peux y accéder à tout moment (tant que je reste connecté à la DB) ?

  10. #10
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 899
    Par défaut
    Salut à tous.

    Citation Envoyé par Dens1
    Cela dit, aller chercher sa baguette en Ferrari, ça fait chère la baguette (ne pas s'émouvoir que le monde parte en couille ...).
    Il y a des gens qui ont une drôle de façon de raisonner.
    Je ne parle pas de la consommation d'essence qui doit être énorme, ni du choix de la voiture.
    Mais bien de l'exagération dans le comportement uniquement pour se faire remarquer.
    C'est comme qui dirait, puisque je peux le faire alors pourquoi s'en priver.

    Citation Envoyé par Dens1
    Je préconise une paire de chaussure (allez bon, de marque même, pour ceux qui savent plus faire simple).
    C'est surtout bon pour le cœur de faire un peu d'exercice chaque jour.

    Citation Envoyé par Dens1
    Je veux dire, que la vue persiste, et que je peux y accéder à tout moment (tant que je reste connecté à la DB) ?
    Oui.

    @+

  11. #11
    Membre éclairé
    Homme Profil pro
    sans
    Inscrit en
    Juillet 2019
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Juillet 2019
    Messages : 141
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    C'est surtout bon pour le cœur de faire un peu d'exercice chaque jour.
    ...
    Oui.@+
    Bien, toutefois je verrai à l'usage (je note la "philosophie" ;-) ).
    Merci @++

  12. #12
    Membre éclairé
    Homme Profil pro
    sans
    Inscrit en
    Juillet 2019
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Juillet 2019
    Messages : 141
    Par défaut
    Bonjour,
    j'ajoute: c'est plutôt dans la doc de mysql que j'aurais dû chercher (pas phpmyadmin).
    lien intéressant: http://dev.mysql.com/doc/refman/5.7/...d-columns.html (exemple en bout de page)

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

Discussions similaires

  1. [MySQL] affichage de données saisies manuellement dans phpmyadmin
    Par coulibaly_zoumana dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 21/04/2020, 17h15
  2. [XL-2010] Transformer une BDD en colonne selon choix dans useform pour alimenter graphique.
    Par Vaness_28 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/06/2016, 11h59
  3. Insérer une colonne virtuelle compteur dans une requête
    Par Timkeeper dans le forum Langage SQL
    Réponses: 10
    Dernier message: 14/06/2015, 17h36
  4. Problème d'affichage de colonnes dans un listview
    Par claireP23 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 12/06/2007, 16h30
  5. Réponses: 15
    Dernier message: 22/07/2005, 09h49

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