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 :

probleme utilisation substr


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    818
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 818
    Par défaut probleme utilisation substr
    Bonjour,

    Voici ma requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select SUBSTR(date,1,4) from matable GROUP BY SUBSTR(date,1,4)
    Voici la réponse MYSQL:
    #1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '( date , 1 , 4 ) from orders GROUP BY SUBSTR ( date , 1 , 4 )
    date est un champ de ma table, où la date est stockée de la forme suivante:
    annéemoisjour
    Donc je cherche a recuperer toutes les années en faisant un substr pour isoler l'année de ma date, mais je ne vois pas pourquoi ca ne marche pas...

    Une idée?

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    818
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 818
    Par défaut
    J'ai trouvé, en fait, il fallait mettre substring...

    Maintenant je veux imbrique une autre requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT SUBSTRING(date,1,4) FROM orders
    WHERE plus!=0 and 
    (
     SELECT ref,produit,couleur,SUM(qte) FROM orders2
     WHERE SUBSTRING(ref,1,4)='0604'
     GROUP BY couleur,ref
    )
    GROUP BY SUBSTRING(date,1,4)
    En fait
    Voici le schéma simplifié des tables concernées:

    Table orders:
    -date (ex:20071231)
    -plus

    Table orders2:
    -ref
    -produit
    -couleur
    -qte
    En gros, je veux la quantité pour chaque couleur d'une reference pour chaque année...

    Un tableau dans ce genre là:
    REF | 2006 | 2007
    0604001 | noir 10 | noir 5
    0604001 | rouge 10 | rouge 5
    0604002 | noir 9 | noir 4

  3. #3
    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 063
    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 063
    Par défaut
    Bonjour,

    Première remaque sur la première requête, plutôt qu'un GROUP BY, essaie avec DISTINCT, ça sera plus performant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT DISTINCT SUBSTRING(date,1,4)
    FROM matable
    Et ma question : comment fais-tu le lien entre les tables orders et orders2 ?
    Mets-nous quelques exemples du contenu de chaque table et de ce que tu veux en sortie de requête, pour nous permettre de t'aider plus efficacement...

    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

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    818
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 818
    Par défaut
    Voici mes tables:
    orders:
    commande int(10) Non
    client text Non
    date text Non
    plus int(10) Non 0


    orders2:
    id varchar(10) Non 0
    commande int(10) Non
    ref text Non
    produit text Non
    qte text Non
    couleur text Non
    C'est commande qui lie les deux tables...
    En fait orders correspond a une commande, et orders2 correspond aux lignes des produits d'une commande.

    Je souhaiterais donc savoir le nombre de produits que j'ai vendu par couleur, par référence et par année(2006 et 2007).

    Le résultat étant un tableau dans ce style:
    REF | 2006 | 2007
    0604001 | noir 10 | noir 5
    0604001 | rouge 10 | rouge 5
    0604002 | noir 9 | noir 4

  5. #5
    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 063
    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 063
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT o2.ref, SUBSTRING(o.date,1,4) as annee, o2.couleur, count(o.commande)
    FROM orders o
    INNER JOIN orders2 o2 ON o.commande = o2.commande
    GROUP BY o2.ref, SUBSTRING(o.date,1,4), o2.couleur
    Pour faire un affichage avec une colonne par année, c'est un peu plus compliqué, parce qu'il faut faire autant de jointures sur la table commande qu'il y a d'années, en mettant l'année dans la condition de jointure (pas sûr d'être très clair, là ).

    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

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    818
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 818
    Par défaut
    C'est presque ca....

    En fait ce n'est pas le nombre de commande, mais le nombre de produit.
    Donc ca correspond au champ qte de la table orders2...
    En fait, je veux savoir combien j'ai vendu de produit par couleur par référence pour l'année 2006 et idem pour l'année 2007.

    J'ai modifié la requête, mais les quantitées ne correspondent pas...

    J'ai du faire une erreur, mais jene vois pas ou...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT o2.ref, SUBSTRING( o.date, 1, 4 ) AS annee, o2.couleur, SUM( o2.qte )
    FROM orders o
    INNER JOIN orders2 o2 ON o.commande = o2.commande
    WHERE SUBSTRING( o2.ref, 1, 4 ) = '0604' AND o.plus !=0
    GROUP BY SUBSTRING( o2.ref, 1, 4 ) , SUBSTRING( o.date, 1, 4 ) , o2.couleur
    ORDER BY SUBSTRING( o.date, 1, 4 ) , o2.ref
    Une idée?

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

Discussions similaires

  1. [DLL]Probleme utilisation DLL
    Par bubulle63 dans le forum Windows
    Réponses: 4
    Dernier message: 07/09/2006, 13h35
  2. probleme utilisation fonction split
    Par Lnmex dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 04/07/2006, 16h40
  3. probleme utilisation de iis
    Par seb833434 dans le forum IIS
    Réponses: 2
    Dernier message: 15/06/2006, 17h19
  4. Probleme utilisation d'Objets managé grace a gcroot
    Par pepefourras dans le forum MFC
    Réponses: 4
    Dernier message: 16/05/2006, 00h26
  5. utilisation substring
    Par yannickrohel dans le forum C
    Réponses: 8
    Dernier message: 25/02/2006, 22h08

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