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 SQL Discussion :

Requête sur plusieurs champs tout en comptant!


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 112
    Points : 74
    Points
    74
    Par défaut Requête sur plusieurs champs tout en comptant!
    Bonjour à tous,

    pour un module de recherche en base, je fais à chaque fois 2 requêtes :
    - une pour récupérer les informations que je veux,
    - l'autre pour compter ces informations

    pour raisons évidentes d'optimisation , je souhaite n'en faire qu'une. Est-ce possible? Si oui comment?

    Merci d'avance

  2. #2
    Scorpi0
    Invité(e)
    Par défaut
    Bonjour,

    Un petit tour du côté des règles peut être ?

    http://www.developpez.net/forums/a69...gage-sql-lire/

    A part te donner tout un cours sur le SQL, je ne sais pas quoi te répondre !

  3. #3
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 112
    Points : 74
    Points
    74
    Par défaut
    euh... ouais

    je comprend pas bien pourquoi tu m'envoie vers les règles du forum ScorpiO !

    Si c'est parce que tu penses que je me suis planter de forum...ouai pourquoi pas!
    Si c'est parce que tu penses que je trouverai la réponse à ma question dans les cours SQL, ba oui évidement, comme tout le monde si on y passe 10h. Le truc c'est que j'ai pas 10h et qu'il est surement plus malin d'écrire un post sur un sujet spécifique comme c'est le cas!

    Et si tout le monde se déchiré à éplucher tous les cours pour obtenir une réponse, le forum n'a plus aucune utilité!!

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    Dans les règles du forum, il est dit notamment qu'il faut préciser ton SGBD (c'est le 2).
    Or personnellement je vois une solution avec une procédure stockée sous sql server en utilisant la variable @@rowcount je crois, mais si tu es sous my sql cette solution ne fonctionnera pas et inversement
    Par ailleurs si tu passes par un langage d'accès au données, celui ci peut éventuellement de donner la solution (propriété recordcount d'un recordset DAO par exemple).
    Cordialement
    Soazig

  5. #5
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 112
    Points : 74
    Points
    74
    Par défaut
    Je travaille avec mySql et PHP. Le truc étant déjà de savoir si c'est possible de le faire ou pas!

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    Je reformule ce que j'ai compris car je pense que Scorpio n'avait pas compris. et peut-être d'autres
    TekFanatiX fait régulièrement cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select * from MA_TABLE WHERE MON_CHAMP='xc,gl'
    suivi ou précédé de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select count(*) as NBRE from MA_TABLE WHERE MON_CHAMP='xc,gl'
    Il voudrait savoir s'il n'y a pas un moyen de ne pas faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select count(*) as NBRE from MA_TABLE WHERE MON_CHAMP='xc,gl'
    qu'il trouve redondant en récupérant du premier select le nombre de tuple retourné, tout cela en MYSQL.
    Personnellement sous SQL server il y avait éventuellement moyen de jouer avec les variables @@rowcount mais je n'ai jamais utilisé MYSQL et donc je n'ai pas de réponse.
    A+
    Soazig

  7. #7
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par soazig Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select count(*) as NBRE from MA_TABLE WHERE MON_CHAMP='xc,gl'
    Je ne vois pas pourquoi cette requête ne fonctionnerait pas !
    Elle est censée te donner directement le nombre de lignes de MA_TABLE pour lesquelles MON_CHAMP = 'xc,gl'.
    Ou alors tu exprimes mal ton besoin.

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Cinephil ce n'est pas moi qui exprime mal le besoin c'est TekFanatiX.
    Je ne sais pas pour quelle raison (pagination?), TekFanatiX fait deux fois une requête la première fois (celle avec le count) pour savoir le nombre de ligne que lui retournera la seconde (celle sans le count). Et il ne voudrait faire que la seconde (sans le count) et avoir les deux résultats.
    En fait c'est ce que j'ai compris, peut-être me suis-je fourvoyée.
    A+
    Soazig

  9. #9
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Au temps pour moi, je n'avais pas vu que ce n'était pas toi qui posait la question d'origine de la discussion.
    Laissons donc TekFanatiX nous dire plus précisément ce qu'il cherche à faire alors.

  10. #10
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 112
    Points : 74
    Points
    74
    Par défaut
    Désolé de répondre si tardivement,

    en fait je veux une requête de ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT info1, info2, COUNT(*) AS cpt FROM ma_table
    Mais est ce que c'est possible de récupérer un compteur en même temps que des informations? Et si oui est qu'un simple cpt = $donnee[cpt]; suffit?

  11. #11
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    C'est possible avec un GROUP BY.

    Cette requête va compter combien il y a de lignes pour chaque couple (info1, info2) différent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT info1, info2, COUNT(*) AS Nombre
    FROM taTable
    GROUP BY info1, info2

  12. #12
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 112
    Points : 74
    Points
    74
    Par défaut
    merci CinePhil, c'est exactement ce que je cherchais !

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

Discussions similaires

  1. Requête sur plusieurs champs
    Par Crudelix dans le forum Requêtes
    Réponses: 4
    Dernier message: 19/07/2010, 16h12
  2. Comment créer une sous requête sur plusieurs champs?
    Par Anonymouse dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 10/06/2008, 09h13
  3. Requête sur plusieurs champs avec LIKE
    Par zestrellita dans le forum Langage SQL
    Réponses: 4
    Dernier message: 23/04/2007, 14h58
  4. Requête sur plusieurs champs
    Par pierrot67 dans le forum Bases de données
    Réponses: 3
    Dernier message: 26/02/2007, 16h33
  5. Requête sur plusieurs champs
    Par pierrot67 dans le forum Bases de données
    Réponses: 6
    Dernier message: 21/02/2007, 10h51

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