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

PHP & Base de données Discussion :

Grouper un champ pour n'avoir qu'une seule occurence


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 852
    Par défaut Grouper un champ pour n'avoir qu'une seule occurence
    Bonjour,

    Je cherche à grouper un champ de ma table qui apparaît plusieurs fois, pour n'en avoir qu'une seule occurence. Il me semble que c'est faisable avec un opérateur mais je ne trouve pas lequel (j'ai regardé les GROUP BY et GROUP_CONCAT mais ce n'est pas ça).

    Ce que j'ai en résultat de ma requête :

    lot 1 | produit 1
    lot 1 | produit 2
    lot 1 | produit 3
    lot 2 | produit 1
    lot 2 | produit 2
    lot 2 | produit 3

    Ce que je voudrais (une seule occurence du lot) :
    lot 1
    | produit 1
    | produit 2
    | produit 3
    lot 2
    | produit 1
    | produit 2
    | produit 3

    Merci d'avance pour votre aide

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    Il s'agit là de cosmétique qui doit être prise en charge de préférence par l'application qui affiche le résultat de la requête.

    Toutefois des solutions existent qui recourent à des fonctions du langage SQL quine sont pas prises en charge par tous les SGBD.
    Vous n'avez pas précisé celui que vous utilisez malheureusement
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre éclairé
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 852
    Par défaut
    Oui j'ai oublié : c'est sur MySQL (v 5.1)

    Depuis mon post, je me suis effectivement dit que j'allais le traiter dans l'affichage. Comme je suis toujours bloqué, je vais aller poster dans le forum PHP, à moins que le sujet puisse être déplacé ? Je vais attendre quelques minutes en avant de reposter là-bas

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    Déplacé vers PHP
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre éclairé
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 852
    Par défaut
    Merci Al !

    Voilà donc où j'en suis en PHP, j'ai essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
      $q_res = db_query($q);
      $lot_liste = array();
      $lot_num = 0;
      while ($res = db_fetch_object($q_res))
      {
        while ( !in_array($res->lot_value, $lot_liste) )
        {
          $pdt_liste[$lot_num] = $res->lot;
          $lot_num++;
        }
      }
    Je cherchais à faire d'abord un tableau des lots afin de les isoler, pour ensuite pour chacun d'entre eux faire un tableau des produits, et enfin faire un tableau global [tableau des lots, tableau des produits], mais je pense que ce n'est pas une bonne solution, je m'emmêle les pinceaux

    Je cherche à avoir un résultat de ce type, mais je n'arrive pas à le transformer en code :

    Tableau_general [
    lot[0]
    produit[0]
    produit[1]
    produit[2]
    lot[1]
    produit[0]
    produit[1]
    produit[2]
    ]

  6. #6
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Bonjour,

    En premier jet, (ya sûrement des petites erreurs)

    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
     
      $q_res = db_query($q);
      $lot_liste = array();   // tableau général
      $lot_num = 0;           // index tableau
     
      // Maj du premier lot
      if( $res = db_fetch_object($q_res) ) {
          $lot_num_sav = $res->lot_value;
          $lot_liste[$lot_nom++] = $res->lot_value;
     
          while ($res = db_fetch_object($q_res)) {
              if( $res->lot_value == $lot_num_sav ) {
                  // On remplit avec les produits
                  $lot_liste[$lot_nom++] = $res->lot;
              } else {
                  // Num lot suivant
                 $lot_num_sav = $res->lot_value;
                 $lot_liste[$lot_nom++] = $res->lot_value;
              }
           }
      }

    Ya peut être mieux, mais je pense que ce code peut aboutir

Discussions similaires

  1. [XL-2010] Ajout d'un champ pour nouvelle saisie dans une liste déroulante
    Par jerem56 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/03/2014, 10h29
  2. Réponses: 6
    Dernier message: 11/08/2010, 15h50
  3. Joindre plusieurs tables pour en former qu'une seule.
    Par timeout dans le forum Requêtes
    Réponses: 7
    Dernier message: 19/09/2005, 09h18
  4. valeur d'un champ pour l'utiliser dans une requete
    Par bachilbouzouk dans le forum ASP
    Réponses: 4
    Dernier message: 08/04/2005, 16h58
  5. [MSSQL] Problème pour sélectionner une seule occurence
    Par Tinfolley dans le forum Langage SQL
    Réponses: 4
    Dernier message: 02/07/2004, 09h02

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