Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/11/2011, 00h28   #1
Invité de passage
 
Homme Philippe
Administrateur systèmes et réseaux
Inscription : août 2011
Messages : 7
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Localisation : France

Informations professionnelles :
Activité : Administrateur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : août 2011
Messages : 7
Points : 0
Points : 0
Par défaut Compter avec 2 tables sous-requête

Bonjour,

J'ai 2 tables en SQL et je suis hébergé chez free qui n'accepte pas les clés étrangères ni la fonction SQL "INTERSECT":

  • eleves1112 avec les champs "Cours" (text) et club(entier)
  • clubs1112 avec les champs "id" (entier) et ATCLUB (entier)


je voudrais compter le nombre de clubs qui ont des élèves 'D1' (eleves1112.cours) pour 1 appartenance au '95' (clubs.ATCLUB) sachant que pour 1 même club "eleves1112.club = clubs1112.id"

j'ai donc à combiner quelque chose comme les 2 requêtes suivantes qui fonctionnent séparemment :
Code :
<?php $Rclub111295sco ="SELECT COUNT(id) AS BNCLUB111295SCO  FROM clubs1112 WHERE ATCLUB = 95 " ?>
et
Code :
<?php  $Rclub111295sco ="SELECT eleves1112.Cours, eleves1112.club, clubs1112.id FROM eleves1112, clubs1112 WHERE eleves1112.Cours = 'D1'AND eleves1112.club = clubs1112.id" ?>
j'essaie avec les sous requêtes et je n'y arrive pas
Quelqu'un a-t-il une solution ?
D'avance merci
pchartier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2011, 11h14   #2
Invité de passage
 
Homme Philippe
Administrateur systèmes et réseaux
Inscription : août 2011
Messages : 7
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Localisation : France

Informations professionnelles :
Activité : Administrateur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : août 2011
Messages : 7
Points : 0
Points : 0
Par défaut 1 possibilité

bien sur je peux faire :
Code :
1
2
3
4
5
6
7
8
<?php
mysql_select_db($database_sqlfree, $sqlfree);
$query_Rclub111295sco = "SELECT eleves1112.Cours, eleves1112.club, clubs1112.id, clubs1112.ATCLUB FROM eleves1112, clubs1112 WHERE clubs1112.ATCLUB= '95' AND eleves1112.Cours = 'D1' AND clubs1112.id = eleves1112.club ";
$Rclub111295sco = mysql_query($query_Rclub111295sco, $sqlfree) OR
 die(mysql_error());
$row_Rclub111295sco = mysql_fetch_assoc($Rclub111295sco);
$totalRows_Rclub111295sco = mysql_num_rows($Rclub111295sco);
?>
et récupérer totalRows
mais je pense qu'il y a plus performant à faire avec "COUNT"
et en plus la je récupère le nombre d'élèves et non pas le nombre de clubs DISTINCT paramètre qui m'est refusé dans la commance ci-dessus en mettant "DISTINCT clubs1112.club"
pchartier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2011, 13h24   #3
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 656
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 656
Points : 2 658
Points : 2 658
bonjour,


quelque chose comme ça devrait faire l'affaire :
Code :
1
2
3
4
 
SELECT count(*)
FROM clubs1112 a
WHERE a.ATCLUB = 95 AND EXISTS (SELECT 1 FROM eleves1112 b WHERE a.id = b.club)
punkoff est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2011, 14h44   #4
Invité de passage
 
Homme Philippe
Administrateur systèmes et réseaux
Inscription : août 2011
Messages : 7
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Localisation : France

Informations professionnelles :
Activité : Administrateur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : août 2011
Messages : 7
Points : 0
Points : 0
merci cela fonctionne (en ajoutant cours = 'D1')
et c'est bien sûr plus rapide que ce que j'avais fait sans le count car 1 seul enregistrement retourné. Ce qu'il faut éviter de faire :
Code :
1
2
3
4
 
SELECT DISTINCT(club), eleves1112.Cours, clubs1112.id, clubs1112.ATCLUB, eleves1112.club 
FROM eleves1112, clubs1112 
WHERE clubs1112.ATCLUB= '95' AND eleves1112.Cours = 'D1' AND clubs1112.id = eleves1112.club
pchartier est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h42.


 
 
 
 
Partenaires

Hébergement Web