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 :

critère de sélection sur une seule colonne


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 12
    Points : 2
    Points
    2
    Par défaut critère de sélection sur une seule colonne
    Bonjour
    J'ai plusieurs colonnes dans ma table et je veux afficher des résultats .
    J'ai une colonne référence et je veux que ma requete affiche les ligne qui corresponde aux références(sur le même colonne) qui se ressemble
    la colonne référence es en VACHAR.
    Mon PBM c'est que les créières sont dans la même colonne, comment dire à la requête d'afficher les résultats des lignes qui ont la même référence en fait?

    Merci

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Il faudrait nous donner un schéma et/ou une description des tables et un besoin clair, éventuellement avec un exemple de données et de résultat attendu sinon on ne peut pas vous aider.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Candidat au Club
    Inscrit en
    Décembre 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    en clair j'ai une table comprenant les champs
    datevaleur,libellé,référence,dateprocess,montant
    Miantenant je veux faire la somme des montants [que je fais avec un SELECT SUM(montant) FROM TABLE] que pour les montants dont les références sont identiques
    est-ce plus explicite maintenant?
    Merci

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    GROUP BY reference permettra d'avoir la somme pour chaque référence.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Candidat au Club
    Inscrit en
    Décembre 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    En fait je ne cherche pas la somme pour chaque référence mais la somme des références qui se ressemblent
    s'il s'agissait de 2 colonnes différentes on aurait eu
    SELECT SUM(montant) from table where ref==ref2

    Mais comme ref est une seule colonne....donc je veux que l'addition des montants ne se fassent que pour les ref qui sont égales

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Ben c'est ce que va faire le GROUP BY ! Où alors tu exprimes mal ton besoin !
    Encore une fois, donne un jeu de données exemple et le résultat attendu, ce sera plus clair !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Candidat au Club
    Inscrit en
    Décembre 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    exmple
    ref----------------montant
    80201------------- 2500
    80514------------- 4500
    80615------------- 3650
    80201------------- -2500 (chiffre négatif)
    80514------------- -4500 (chiffre négatif)
    83641------------- 25014
    80615------------ -3650 (chiffre négatif)
    TOTAL -------------25014

    Maintenant il va faire la somme de tous ces montant en affichant que les lignes des réf qui ne se ressemblent pas c'est à dire

    83641-------------------25014

    TOTAL ------------------25014

  8. #8
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Et le critère "qui ne se ressemblent pas" signifie dans ce cas "les ref qui ne commencent pas par 80" ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT ref, SUM(montant)
    FROM laTable
    WHERE ref NOT LIKE '80%'
    GROUP BY ref
    ORDER BY ref
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  9. #9
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 73

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Points : 126
    Points
    126
    Par défaut
    Bonjour,
    Si j'ai bien compris la requête suivante devrait répondre à votre demande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select ref,sum(montant) from latable
    group by ref 
    having count(*)=1
    Bonne journée
    MS

  10. #10
    Candidat au Club
    Inscrit en
    Décembre 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Et le critère "qui ne se ressemblent pas" signifie dans ce cas "les ref qui ne commencent pas par 80" ?
    no en fait ça eut dire une réf qui a un montant positif mais qui n'a pas ed montant négatif
    En réalité toutes les réf doivent s'annuller (montant positif annulé par montant négatif.)
    donc le but du jeu c'est de répertorier toutes les réf qui ne s'annulent pas
    c'est une reqête qui devrait m'aider à apurer de comptes comptables
    Sinon je n'ai pas encore testé les requêtes mais je vous tiens au courant dans 1h

  11. #11
    Candidat au Club
    Inscrit en
    Décembre 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par MarcS Voir le message
    Bonjour,
    Si j'ai bien compris la requête suivante devrait répondre à votre demande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select ref,sum(montant) from latable
    group by ref 
    having count(*)=1
    Bonne journée
    MS
    c'est exactement la requête qu'il me faut
    Le seul hiec c'est que qaund tout est égal à 0 il m'affiche page blanche au lieu de
    REF------------------MONTANT
    TOTAL-----------------0
    Mais bon c'est déjà excellent
    Merci Marcs et Cinéphile pour votre assistance

  12. #12
    Candidat au Club
    Inscrit en
    Décembre 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Il y a quand même un autre problème
    si par exemple j'ai
    ref----------------montant
    80201------------- 2500
    80514------------- 4500
    80615------------- 3650
    80201------------- -2500 (chiffre négatif)
    80514------------- -4500 (chiffre négatif)
    80201------------- 25014
    80615------------ -3650 (chiffre négatif)
    TOTAL -------------25014
    je devrais avoir
    ref-------------montant
    80201----------25014
    Total-----------25014

    Mais là j'ai
    ref----------montant
    80201------2500
    total--------25014

    En fait il faut également que les montants qui s'annulent aient la même valeur absolue avec juste des signe différents et aient la même réf

  13. #13
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    C'est bizarre qu'il t'affiche 80201---2500 !
    SUM(montant) pour la référence 80201 vaut bien 25014 !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  14. #14
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Saluton,
    D'autant que
    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
    -- 
    -- Structure de la table `comptes`
    -- 
     
    CREATE TABLE `comptes` (
      `ref` bigint(20) unsigned NOT NULL,
      `montant` int(11) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
     
    -- 
    -- Contenu de la table `comptes`
    -- 
     
    INSERT INTO `comptes` (`ref`, `montant`) VALUES 
    (80201, 2500),
    (80514, 4500),
    (80615, 3650),
    (80201, -2500),
    (80514, -4500),
    (80201, 25014),
    (80615, -3650);
    à laquelle on applique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT `ref`,SUM(`montant`) solde 
    FROM `comptes`
     GROUP BY `ref` 
    ORDER BY `ref`
    Donne bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ref 	solde
    80201 	25014
    80514 	0
    80615 	0
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  15. #15
    Membre éprouvé
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    Manquerait peut-être juste à compléter en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT `ref`, SUM(`montant`) solde 
    FROM `comptes`
    GROUP BY `ref` 
    HAVING solde!=0
    ORDER BY `ref`
    Si j'ai bien suivi.

  16. #16
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Oui, probablement, c'est que j'avais gardé cette remarque en tête
    Citation Envoyé par ivan54 Voir le message
    Le seul hic c'est que quand tout est égal à 0 il m'affiche page blanche au lieu de
    REF------------------MONTANT
    TOTAL-----------------0
    Là, avec HAVING solde!=0,
    il n'aura rien du tout si toutes les ref sont soldées.
    Mais, après tout, c'est à gérer hors SQL
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  17. #17
    Candidat au Club
    Inscrit en
    Décembre 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par ivan54 Voir le message
    c'est exactement la requête qu'il me faut
    Le seul hiec c'est que qaund tout est égal à 0 il m'affiche page blanche au lieu de
    REF------------------MONTANT
    TOTAL-----------------0
    Mais bon c'est déjà excellent
    Merci Marcs et Cinéphile pour votre assistance
    La requête la plus proche est celle là
    Le seul problème est que ça ne prend pas en compte les réféences qui existenet plusieurs fois
    on peut bien avoir des compte ou il ya la même réf plusieurs fois et seule la référence qui ne s'annule pas doit apparaitre dans le résultat
    ref.........................montant
    80201------------- 2500
    Je posterai ma reuqête demain pour plus de clarté

    80201------------- -2500 (chiffre négatif)

    80201------------- 25014

    TOTAL -------------25014
    je devrais avoir
    ref-------------montant
    80201----------25014
    Total-----------25014

  18. #18
    Candidat au Club
    Inscrit en
    Décembre 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Mon code
    Pour commencer j'ai une table qui comprend les chams suivants
    ref montant
    80202 544520
    80203 38300
    80204 45980
    80203 -38300
    80203 32150
    80201 -25214
    80204 -45980
    80201 -25214
    80202 -544520


    j'ai créé ces 2 requêtes
    $reponsec = mysql_query(" SELECT ref,amount FROM matable GROUP BY ref HAVING count(*)!=1"); //
    et

    $reponsec1 = mysql_query("SELECT SUM(amount) AS total FROM matable ");
    RESULTAT OBTENU

    80201 25214
    80202 544520
    80203 38300
    80204 45980
    TOTAL 6 936


    Le total est exact mais l'affichage des résultats n'est pas le bon
    j'urais du avoir

    80203 32150
    80201 -25214
    TOTAL 6 936

  19. #19
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    La première requête devrait plutôt être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT ref, SUM(amount) AS Solde
    FROM matable 
    GROUP BY ref 
    HAVING Solde <> 0
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  20. #20
    Candidat au Club
    Inscrit en
    Décembre 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Les résultats que j'ai

    80201 25214
    80203 32150
    TOTAL 0

    et quand je fai une deuxième requête pour calculer le montant total
    j'ai total = 6936

    Je suis entrain de voir du cotédes valeurs absolues
    dans le pire des cas je mettrais enregistrements dans 2 tables différentes
    et là ce sera plus simple

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/07/2011, 11h29
  2. wxListCtrl sur une seule colonne
    Par Neophile dans le forum wxWidgets
    Réponses: 1
    Dernier message: 12/03/2007, 10h05
  3. Afficher plusieur colonnes sur une seule colonne ?
    Par Interruption13h dans le forum Langage SQL
    Réponses: 4
    Dernier message: 04/02/2007, 16h57
  4. Figure sur une seule colonne
    Par Eusebius dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 1
    Dernier message: 08/07/2006, 23h46
  5. Recherche multi-mots sur une seule colonne
    Par Badiste dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/03/2004, 11h24

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