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 :

COUNT() de plusieurs tables [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Inscrit en
    Février 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Points : 2
    Points
    2
    Par défaut COUNT() de plusieurs tables
    Bonjour, j'ai fais une recherche sur le forum mais je n'arrive quand même pas à faire ce que je veux... snif

    J'ai 1 base avec 2 tables rdv_tbl et srdv_tbl je veux compter le nombre d'enregistrement de ces 2 tables (optionnellement par date de mon choix)

    donc :

    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
    <?php 
    // on se connecte &agrave; MySQL
    $db = mysql_connect('localhost', ahaha, 'motdepasse') or die('Erreur de connexion '.mysql_error());
     
    // là je selectionne ma table, je fais pareil pour la seconde ???
    mysql_select_db('rdv_tbl',$db)  or die('Erreur de selection '.mysql_error());
    mysql_select_db('srdv_tbl',$db)  or die('Erreur de selection '.mysql_error());
     
    // j'interroge ma base seulement pour rdv_tbl mais comment je fais pour aussi mettre srdv_tbl ?? 
    $retour = mysql_query("SELECT COUNT(*) AS id FROM rdv_tbl WHERE Da BETWEEN '$datemin' AND '$datemax'");
    $donnees = mysql_fetch_array($retour);
    ?>
     
     
                                      <?php echo $donnees['id']; ?>
    <?php
    mysql_close(); // D&eacute;connexion de MySQL
    ?>
    Donc que dois je faire pour faire un COUNT sur ces 2 tables, svp avec une petite explication

    Ps : dans chaque table il y a en commun comme champ "id" et "Ty"

  2. #2
    Membre averti Avatar de mussara
    Inscrit en
    Novembre 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2004
    Messages : 442
    Points : 348
    Points
    348
    Par défaut
    tu peux utiliser mysql_num_rows par exemple

    et tu n'as pas besoin de mettre un alias, tu lances un:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     $sql="SELECT COUNT(*) FROM rdv_tbl WHERE Da BETWEEN '$datemin' AND '$datemax'";
    $req = mysql_query($sql);
    $res = mysql_num_rows($req);
    echo $res." résultats";

  3. #3
    Candidat au Club
    Inscrit en
    Février 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Points : 2
    Points
    2
    Par défaut
    je veux faire un COUNT qui globalise les enregistrements des 2 tables !
    rdv_tbl + srdv_tbl

    merci

  4. #4
    Membre averti Avatar de mussara
    Inscrit en
    Novembre 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2004
    Messages : 442
    Points : 348
    Points
    348
    Par défaut
    je ne vois pas le problème...!
    tu fais une addition et tu as le total, non?

  5. #5
    Candidat au Club
    Inscrit en
    Février 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Points : 2
    Points
    2
    Par défaut
    bien sur mais comment on fait ? .... là j'en ai marre de chercher .... 2heures

    je ne suis pas un pro du php loin de là, j'en fais une fois par an...

  6. #6
    Membre averti Avatar de mussara
    Inscrit en
    Novembre 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2004
    Messages : 442
    Points : 348
    Points
    348
    Par défaut
    il faut que tu lises les bases sur les variables si tu veux les manipuler

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $sql1="SELECT COUNT(*) FROM rdv_tbl WHERE Da BETWEEN '$datemin' AND '$datemax'";
    $sql2="SELECT COUNT(*) FROM srdv_tbl WHERE Da BETWEEN '$datemin' AND '$datemax'";
    $req1 = mysql_query($sql1);
    $req2 = mysql_query($sql2);
    $res1 = mysql_num_rows($req1);
    $res2 = mysql_num_rows($req2);
    $res = $res1 + $res2;
    echo $res." résultats";
    bon tout cela pourrait se factoriser, mais là au moins c'est simple au niveau écriture/compréhension

  7. #7
    Candidat au Club
    Inscrit en
    Février 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Points : 2
    Points
    2
    Par défaut
    il me retourne 2 .........

  8. #8
    Membre averti Avatar de mussara
    Inscrit en
    Novembre 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2004
    Messages : 442
    Points : 348
    Points
    348
    Par défaut
    je ne sais ce qu'il y a dans ta base de données...

  9. #9
    Candidat au Club
    Inscrit en
    Février 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Points : 2
    Points
    2
    Par défaut
    le probleme c'est que je fais un COUNT normal sur rdv_tbl ou srdv_tbl bah il me trouve des valeurs 7 et 14 alors
    le resultat 2 ... l'addition ne fonctionne pas

    HELP ME

  10. #10
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Citation Envoyé par karlito33
    le probleme c'est que je fais un COUNT normal sur rdv_tbl ou srdv_tbl bah il me trouve des valeurs 7 et 14 alors
    le resultat 2 ... l'addition ne fonctionne pas

    HELP ME
    Mais là ta requête elle est pas sur tes tables entières vu qu'il y a des bornes pour la date

  11. #11
    Candidat au Club
    Inscrit en
    Février 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Points : 2
    Points
    2
    Par défaut
    oui mais meme sans date il m'affiche 2...

    Et quand je met les dates il reste quand meme à deux ...

    donc ?

  12. #12
    Membre averti Avatar de mussara
    Inscrit en
    Novembre 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2004
    Messages : 442
    Points : 348
    Points
    348
    Par défaut
    montre nous la requete que tu as écrite

  13. #13
    Candidat au Club
    Inscrit en
    Février 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Points : 2
    Points
    2
    Par défaut
    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
    <?php 
    // on se connecte &agrave; MySQL
    $db = mysql_connect('localhost', '*****', '******') or die('Erreur de connexion '.mysql_error());
     
    // on s&eacute;lectionne la base 
    mysql_select_db('rdv_tbl',$db)  or die('Erreur de selection '.mysql_error());
    mysql_select_db('srdv_tbl',$db)  or die('Erreur de selection '.mysql_error());
     
    // on cr&eacute;e la requ&ecirc;te SQL 
    $sql1="SELECT COUNT(*) FROM rdv_tbl WHERE Da BETWEEN '$datemin' AND '$datemax'";
    $sql2="SELECT COUNT(*) FROM srdv_tbl WHERE Da BETWEEN '$datemin' AND '$datemax'";
    $req1 = mysql_query($sql1);
    $req2 = mysql_query($sql2);
    $res1 = mysql_num_rows($req1);
    $res2 = mysql_num_rows($req2);
    $res = $res1 + $res2;
    echo $res." résultats";
    ?>
    <?php echo $donnees['id']; ?> //je sais ceci n'est pas utile car.. il ne sert plus mais cela n'affecte en rien le resultat
    <?php
    mysql_close(); // D&eacute;connexion de MySQL
    ?>

  14. #14
    Membre averti Avatar de mussara
    Inscrit en
    Novembre 2004
    Messages
    442
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2004
    Messages : 442
    Points : 348
    Points
    348
    Par défaut
    lance des "echo" pour voir les valeurs des variables au fur et à mesure

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 379
    Points : 422
    Points
    422
    Par défaut
    Il y a combien d'entrée dans tes tables ?

    De plus $datemin et $datemax ne sont pas renseignés, essaye de les remplacés par des valeurs pour voir.

    P.s : test ta requête sous PHPMyAdmin pour voir si ça donne ce que tu souhaites.

  16. #16
    Candidat au Club
    Inscrit en
    Février 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Points : 2
    Points
    2
    Par défaut
    je vais lancer des echo .... enfin je crois savoir comment faire.

    Sinon pour la date bah mon formulaire est bon car pout toutes mes autres requetes même par rapport à la date c'est ok !

    C'est juste celle qui cumule la valeur de 2 tables qui me pose probleme

    Je vous tien au courant !

    EDIT : bon alors dans phpmyadmin les 2 requetes SELECT COUNT(*) FROM rdv_tbl WHERE Da BETWEEN '2007-01-01' AND '2007-03-31' puis SELECT COUNT(*) FROM srdv_tbl WHERE Da BETWEEN '2007-01-01' AND '2007-03-31

    me renvoient les bonnes données ..


    echo $res1;
    echo $res2;

    il me renvoi 1 et 1 d'où le 2 affiché ... donc pourquoi ne compte t'il pas le nombre d'enregistrements ?


  17. #17
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Citation Envoyé par karlito33

    Bon problème :
    echo $req1;
    echo $req2;

    il me met ça => Resource id #2
    C'est normal ça le mysql_query renvoie une ressource.

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 379
    Points : 422
    Points
    422
    Par défaut
    Logique hein ...

    mysql_num_rows, contient ... le nombre de ligne qu'il reçoit ...
    Le count() envoi ... 1 ligne.

    Donc 1 + 1 = 2.
    Php ne dit pas de bétise

  19. #19
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Citation Envoyé par SpiritOfDoc
    Logique hein ...

    mysql_num_rows, contient ... le nombre de ligne qu'il reçoit ...
    Le count() envoi ... 1 ligne.

    Donc 1 + 1 = 2.
    Php ne dit pas de bétise
    Rôôôô en plus je pensais à un truc dans ce genre mais trop influencé par ce qui avait été mis j'avais pas trouvé... Merci et bravo Spirit

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 379
    Points : 422
    Points
    422
    Par défaut
    Citation Envoyé par JWhite
    Rôôôô en plus je pensais à un truc dans ce genre mais trop influencé par ce qui avait été mis j'avais pas trouvé... Merci et bravo Spirit
    Ba merci, mais en faite j'ai trouvé ça grâce à toi .

    Ta remarque ma fait penser que la requête était mal traitée :p

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Statistique count sur plusieurs tables
    Par nsanabi dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/03/2009, 11h23
  2. [MySQL] COUNT() de plusieurs tables
    Par Anduriel dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 18/12/2006, 15h34
  3. Count dans plusieurs tables
    Par kevinf dans le forum Requêtes
    Réponses: 11
    Dernier message: 26/11/2006, 11h03
  4. Count sur plusieurs tables
    Par Remedy dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/07/2006, 00h41
  5. Réponses: 8
    Dernier message: 17/05/2006, 14h32

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