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 :

Afficher les enregistrements si le count() vaut 0


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 21
    Points : 18
    Points
    18
    Par défaut Afficher les enregistrements si le count() vaut 0
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT e1.n_emp, e1.nom, e1.prenom, e1.login, count( doc.doc ) nb
                        FROM emprunteur e1, emprunt e2, docs_empruntes doc
                        WHERE e1.n_emp = e2.emprunteur AND doc.emprunt = e2.n_emprunt
                        GROUP BY 2 
                        ORDER BY 5
    Le problème c'est que je voudrais avoir tous les emprunteurs de la table emprunteur( *n_emp, nom, prenom, login, statut(etudiant/prof))
    meme ceux qui n'ont pas d'emprunt (*n_emprunt, date_pret, retour, #emprunt) sachant que la table docs_empruntes(*#doc,*#emprunt) est l'association entre emprunt et document(*n_document,...).

    Parcequ'avec cette requette, je n'ai que les emprunteurs ayant emprunté au moins un livre... donc dommage.

    je voudrais que le count renvoit 0 pour les emprunteurs qui n'ont plus d'emprunt.

    PRECISION: j'avais pensé aux sous requettes mais je ne peux pas a caus e de la version de mysql qui est sur le serveur.

    Merci d'avance si quelqu'un voit mon erreur

  2. #2
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT ...
    FROM emprunteur e1 LEFT JOIN emprunt e2 JOIN docs_empruntes doc
    WHERE ...
    peut-être ?
    Pensez au bouton

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 21
    Points : 18
    Points
    18
    Par défaut
    non plus...

    merci quand meme

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 305
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 305
    Points : 15 633
    Points
    15 633
    Par défaut
    Citation Envoyé par j14z
    non plus...

    merci quand meme
    stop on ne part si vite ;-)

    une jointure externe fait exactement ce que tu veux
    peut être que ce que Maximilian t'a donné ne fonctionne pas directement mais il est sûrement tout près du résultat

  5. #5
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Merci de me soutenir Mathix

    C'est vrai que j'ai donné un exemple à la va-vite, essaye ceci ça devrait mieux marcher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT ...
    FROM emprunteur e1 LEFT JOIN emprunt e2
    ON e1.n_emp = e2.emprunteur
    INNER JOIN docs_empruntes doc 
    ON doc.emprunt = e2.n_emprunt
    ...
    Pensez au bouton

  6. #6
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 21
    Points : 18
    Points
    18
    Par défaut
    waw!

    Ca fait bien deux minutes que j'ai lancé l'execution de la requete dans php my admin et elle est toujours en cours d'execution.
    Quant à mon script au bout de quelques secondes il me dit que le resultat est incorrect et ne reconnait pas la fonction fetchrow().

    Est-ce normal que cela mette autant de temps?

  7. #7
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Citation Envoyé par j14z
    Ca fait bien deux minutes que j'ai lancé l'execution de la requete dans php my admin et elle est toujours en cours d'execution.
    Il y a beaucoup d'enregistrements dans tes tables ? Les champs des clauses WHERE ou ON ont des index sur eux ?
    Essaie peut-être sans le GROUP BY et le ORDER BY dans un premier temps.

    Citation Envoyé par j14z
    Quant à mon script au bout de quelques secondes il me dit que le resultat est incorrect et ne reconnait pas la fonction fetchrow().
    Heu, c'est plutôt mysql_fetch_row()...
    Pensez au bouton

  8. #8
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 21
    Points : 18
    Points
    18
    Par défaut
    je te remercie Maximilian pour ton aide,
    après toute petite modif de la requete, phpmyadmin ne bug plus.

    Voici la requete avec du code en bonus:


    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    $query="SELECT e1.n_emp, e1.nom, e1.prenom, e1.login, count( doc.doc ) nb
                    FROM emprunteur e1 LEFT JOIN emprunt e2 
                    ON e1.n_emp = e2.emprunteur 
                    LEFT JOIN docs_empruntes doc 
                    ON doc.emprunt = e2.n_emprunt                     
                    GROUP BY 1 
                    ORDER BY 5";
            if($_GET["id"]<>NULL){
     
                $query.= 'limit \'$_GET["id"]\', 25';
            }
            else{
     
                $query.= "limit 0, 25";
            }
            $emprunteur=$db->query($query);
            $i=0;
            while($empCour=$emprunteur->fetchRow(DB_FETCHMODE_OBJECT)) {
                $j=$i+1;
                if($empCour->login==""){
                        $login="aucun";
                }
                else{
                        $login=$empCour->login;
                }
                echo "
     
                  <tr>
                    <td class='tdSolid'>$j</td>
                    <td class='tdSolid'>".$empCour->nom." ".$empCour->prenom."</td>
                    <td class='tdSolid'>$login</td>
                    <td class='tdSolid'>$empCour->nb</td>
                    <td class='tdSolid' align='center'><input type='checkbox' name='tab[$i]' value='$empCour->n_emp'></td>
                   </tr>";
                $i++;
     
            }
    Voilà ce code parait etrange mais je m'y habitue, je reprends le soft d'un prédecesseur pour une bibliotheque et a mon avis vous risquez de bientot de me revoir!
    Mes respets
    ++ 8)

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

Discussions similaires

  1. lire et afficher les enregistrements d'un fichier texte mod random
    Par intruder dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 28/08/2007, 00h06
  2. Afficher les enregistrements par rapport à un caractère saisi
    Par issam47 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 05/06/2007, 16h16
  3. [Requête]Afficher les enregistrements de l'année en cours
    Par holodev dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 21/03/2007, 11h29
  4. [MySQL] Afficher les enregistrements de moins de (x) jours.
    Par weelson@mac.com dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 19/02/2007, 18h31
  5. [MySQL] afficher les enregistrements apres 24h
    Par arti2004 dans le forum Requêtes
    Réponses: 1
    Dernier message: 11/06/2006, 15h16

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