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 :

Requete sur 2 tables avec un "si"


Sujet :

Requêtes MySQL

  1. #1
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 542
    Points : 712
    Points
    712
    Par défaut Requete sur 2 tables avec un "si"
    Bonjour à tous

    Je suis débutant, donc SVP ...... indulgence et surtout explications "claires", merci d'avance

    J'ai une BDD avec :

    - une table "gestion", avec les champs : "id_statut" (A, B, C, ....) , et "id_zone" (1, 2, 3,....9)
    - une table "zone" , avec les champs "id_zone" et "regions" et "nb_enregistrement"


    A ce jour j'ai le code suivant (une partie) :

    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
    // .......
    <?php 
     
    				$link = mysql_connect ($serveur,$utilisateur,$motdepasse) or die ('Erreur : '.mysql_error() );
    				mysql_select_db($bdd) or die ('Erreur :'.mysql_error());
    				// requete $sql_tri en haut de page
    				$select = "SELECT id_zone,regions,nb_enregistrement FROM zone limit 0,9";
    				$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
     
     
    				echo "<tbody>";
    				$i=0;
     
    				while($row = mysql_fetch_array($result))
     
    				{
     
    					echo "<tr";
    						if ($i % 2 == 0 && $i>=0) echo " bgcolor='#DCE0E0'";
    					echo ">";				
     
    						echo "<td align=left>".substr($row["id_zone"],0,2)." - ".utf8_encode(substr($row["regions"],0,300))."</td>";
    						echo "<td align=center>".utf8_encode(substr($row["nb_enregistrement"],0,10))."</td>";
     
    					$i++;
    					echo "</tr>";
    					//}
    				}
     
    				echo "</tbody>";
     
    			?>
    // .......
    et cela fonctionne, mais .....


    j'aimerai afficher un tableau comme ceci :

    id_zone - region nb_enregistrement

    1 - picardie 3 (le 3 représentant le nombre "nb_enregistrement" de "id_zone" "1" avec "id_statut"='A')
    2 - ......

    en supprimant la saisie "brute" du "nb_enregistrement" dans la table "zone", et en calculant celui-ci directement dans la base "gestion"

    Je suppose que la requête devrait être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $select="SELECT COUNT(*) AS id_zone from gestion where id_statut= 'A' ";
    avec un "GROUP BY id_zone" ???????

    ou :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $select="SELECT COUNT(DISTINCT id_zone) AS Nbre_enregistrement FROM gestion GROUP BY id_zone WHERE id_statut = 'A' ";
    (de http://www.developpez.net/forums/d94...ount-distinct/ )

    et une requête sur la table "zone" pour récupérer le nom de "regions"

    mais je ne sais pas comment modifier et incorporer dans le code ci-dessus, malgré mes recherches.

    Merci d'avance de votre aide, j'espère avoir été clair

    Eric

  2. #2
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 791
    Points
    4 791
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id_zone,regions,nb_enregistrement FROM zone limit 0,9
    C'est du MySQL. Tu auras plus de chance en postant dans le bon forum
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  3. #3
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 791
    Points
    4 791
    Par défaut
    Sinon, juste pour la fabrication du tableau, il faut mettre en relation les tables [zone] et [gestion].
    Cela donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT zone.regions, gestion.id_statut 
    FROM  zone INNER JOIN gestion ON zone.id_zone = regions.id_zone
    Ce code ne répond pas encore à ton besoin.
    Je te montre simplement comment mettre en relation tes 2 tables.

    Maintenant, pour avoir le comptage par région :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT zone.regions, COUNT(*) AS nb_enregistrement
    FROM  zone INNER JOIN gestion ON zone.id_zone = regions.id_zone 
    GROUP BY zone.regions
    Si tu veux aussi avoir id_zone :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT zone.regions, zone.id_zone, COUNT(*) AS nb_enregistrement
    FROM  zone INNER JOIN gestion ON zone.id_zone = regions.id_zone 
    GROUP BY zone.regions, zone.id_zone
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  4. #4
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 542
    Points : 712
    Points
    712
    Par défaut
    Re

    Merci pour le conseil (1ère réponse)

    Merci pour la ligne de code, je vais essayer de la (de tout) mettre en place

    Eric

  5. #5
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 542
    Points : 712
    Points
    712
    Par défaut
    Bonjour à tous
    Bonjour Népomucène


    Après quelques tests, cela fonctionne

    Merci

    Eric

    PS : désolé pour cette réponse tardive, mais je n'ai pas eu beaucoup de temps depuis fin août pour me pencher sur ce problème ardu pour mes maigres connaissances

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/10/2006, 09h09
  2. [MySQL] Requete sur 2 tables avec champs commun
    Par marcd dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 20/04/2006, 16h14
  3. aide pour requete sur 2 tables avec clé étranere
    Par richton95 dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/12/2005, 13h32
  4. besoin d'aide -> requete sur 2 tables avec count()
    Par parksto dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/10/2005, 19h06

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