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

Requêtes MySQL Discussion :

Obtenir un champs supplémentaire en fonction des champs existant [MySQL-5.1]


Sujet :

Requêtes MySQL

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Obtenir un champs supplémentaire en fonction des champs existant
    Bonjour,

    Je nage un peu et me demande si c'est possible en MySQL.

    J'ai une table qui comprens différents champs dont certains sont identiques :

    name, reference, quantity
    nom1, reference1 ab, 3
    nom1, reference1 az, 4
    nom2, ref32 ze, 2
    nom2, ref32 sa, 7

    J'aimerais que pour chaque groupe de champs dont le "name" est identique, ma requête génère un nouveau champ qui ressemblerait à ça :
    nom1, reference1 a, 7
    nom2, ref32, 9

    est-ce possible ?
    Merci beaucoup pour votre aide.
    Cordialement.

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Je ne connais pas de fonction MySQL renvoyant la partie commune entre deux chaines, mais vous pouvez l'écrire :

    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
     
    DELIMITER //
    CREATE FUNCTION F_STR_COMMON(str1 text, str2 text)
    RETURNS text
    DETERMINISTIC
    BEGIN
    DECLARE i INT DEFAULT 1;
    DECLARE str_len INT;
    SET str_len=greatest(length(str1),length(str2));
    WHILE(SUBSTRING(str1, i, 1) = SUBSTRING(str2, i, 1)) 
    DO
    	SET i=i+1;
    END WHILE;
    RETURN(LEFT(str1, i-1));
    END//
    DELIMITER ;
    Puis l'appeler dans votre requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT 
    		name
    	,	F_STR_COMMON(MIN(reference), MAX(reference)) AS reference
    	,	SUM(quantity)
    FROM LaTable
    GROUP BY name

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Mars 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Vraiment merci beaucoup, c'est exactement le résultat recherché !
    Cordialement !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/08/2007, 00h05
  2. Requête variable en fonction des champs disponibles
    Par hemgui dans le forum Requêtes
    Réponses: 2
    Dernier message: 30/05/2007, 14h30
  3. Réponses: 27
    Dernier message: 12/04/2007, 10h23
  4. Réponses: 8
    Dernier message: 04/04/2007, 15h29
  5. [CR] mise en forme d'un champs texte en fonction des données
    Par niPrM dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 29/06/2004, 11h57

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