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

Langage PHP Discussion :

Select unique et trié


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 48
    Points : 27
    Points
    27
    Par défaut Select unique et trié
    Bonjour à tous,

    Sur ma BDD j'ai une table DEFIS avec les champs :
    - ID (autoincrement)
    - Attaquant (varchar 15 : pseudo de l'attaquant)
    - Defenseur (varchar 15 : pseudo du défenseur)
    - Attaque1 (tinyint : niveau d'attaque de l'attaquant)
    - Attaque2 (tinyint : niveau d'attaque du défenseur)

    Ma requête actuelle : $r4=mysql_query("SELECT attaquant, attaque1, id FROM defis WHERE defenseur='$pseudo' AND combat='n' ORDER BY attaquant ASC");

    Le souci étant qu'elle sélectionne PLUSIEURS attaquants, par exemple 50 données avec le même attaquant.

    Mon souhait : Obtenir une requête qui sort toutes les données de la requête précédente, mais UNE seule fois par attaquant ET qui compte le nombre de données avec ce même attaquant.

    On m'a parlé de SELECT DISTINCT, de GROUP BY... mais je n'ai pas réussi à sortir quelque chose de réellement pertinent.

    Merci par avance de votre aide.

    Antoine

  2. #2
    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
    Points : 3 390
    Points
    3 390
    Par défaut
    Bonjour,

    D'après ta requête, tu affiches pour chaque attaquant tous les défis qu'il a eut avec des défenseurs.

    $n correspond à quoi ?

    GROUP BY sert pour faire des calculs:
    Par ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT attaquant, SUM(n)
    FROM defis
    GROUP BY attaquant
    Donnera pour chaque attaquant le nombre de défis total (en prennant n comme le nombre de défis qu'il a eu pour un défenseur)

    DISTINCT te servira à rien je pense pour ton cas

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 48
    Points : 27
    Points
    27
    Par défaut
    n n'a aucune importance dans cette requête j'aurais pas dû le mettre

    Ce que je souhaiterais c'est afficher toutes les données de la base de données quand le DEFENSEUR correspond à $pseudo.

    Mais une seule ligne par ATTAQUANT unique (car doublons).


    Et en second, compter le nombre de doublons par attaquant.

    Vous comprenez ?

    Merci.

  4. #4
    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
    Points : 3 390
    Points
    3 390
    Par défaut
    Yes,

    1) Avec distinct
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "SELECT DISTINCT attaquant FROM defis WHERE defenseur='$pseudo' ORDER BY attaquant ASC"
    2) Avec GROUP BY + COUNT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT attaquant as a, SUM(SELECT COUNT attaquant as b FROM defis WHERE b=a)
    FROM defis
    GROUP BY attaquant
    GROUP BY ici car attaquant avec plusieurs défenseurs (pour le calcul mais pas pour l'affichage)
    Requête à traduire pour Mysql

Discussions similaires

  1. Réponses: 8
    Dernier message: 26/06/2007, 11h21
  2. Boutons selection unique
    Par profane dans le forum IHM
    Réponses: 4
    Dernier message: 15/03/2007, 16h45
  3. Aide pour une requete selection unique.
    Par mitchb dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/11/2006, 16h42
  4. SELECT DISTINCT avec tri sur un autre champ que celui du distinct
    Par Stephane_br dans le forum Langage SQL
    Réponses: 5
    Dernier message: 09/11/2006, 11h37
  5. XSLT - select unique node - prceding-sibling usage
    Par clarenne dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 13/01/2006, 18h03

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