Count, Distinct sql
Résolu
Valitox
-
Valitox -
Valitox -
Bonjour,
Je dév mon site perso actuellement et j'au un petit soucis concernant l'affichage des certaines informations. Est-ce que quelqu'un peut m'aider?
Alors je m'explique j'ai une table "ETUDIANT" et je voudrais afficher tous les Etudiants sans doublons et afficher le nombres de ses articles à côté de son nom.
Voilà ma requête sql
<?php
$sql = "SELECT COUNT(article) as nbrarticle, etudiant from etudiant WHERE etudiant LIKE'".$_GET['etudiant']."%' ORDER by etudiant ASC";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$n=0;
while($data = mysql_fetch_array($req)) {
?>
<li class="small-<?php echo $n++ % 2; ?>">
<a class="color" href="etudiant/afficher.php?idetudiant=<?php echo $data['idetudiant']; ?>" title="<?php echo $data['etudiant'];?>"><?php echo $data['etudiant'];?></a>
<?php echo $data['nbrarticle']; ?></li>
<?php
} ;?>
Mais le problème, ça affiche juste:
- Benoit : 13 articles
au lieu de:
-Benoit: 5 articles
-Francois: 1article
etc....
Un peu d'aide s'il vous plaît!!!!!
Je dév mon site perso actuellement et j'au un petit soucis concernant l'affichage des certaines informations. Est-ce que quelqu'un peut m'aider?
Alors je m'explique j'ai une table "ETUDIANT" et je voudrais afficher tous les Etudiants sans doublons et afficher le nombres de ses articles à côté de son nom.
Voilà ma requête sql
<?php
$sql = "SELECT COUNT(article) as nbrarticle, etudiant from etudiant WHERE etudiant LIKE'".$_GET['etudiant']."%' ORDER by etudiant ASC";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$n=0;
while($data = mysql_fetch_array($req)) {
?>
<li class="small-<?php echo $n++ % 2; ?>">
<a class="color" href="etudiant/afficher.php?idetudiant=<?php echo $data['idetudiant']; ?>" title="<?php echo $data['etudiant'];?>"><?php echo $data['etudiant'];?></a>
<?php echo $data['nbrarticle']; ?></li>
<?php
} ;?>
Mais le problème, ça affiche juste:
- Benoit : 13 articles
au lieu de:
-Benoit: 5 articles
-Francois: 1article
etc....
Un peu d'aide s'il vous plaît!!!!!
A voir également:
- Count, Distinct sql
- Logiciel sql - Télécharger - Bases de données
- 2 colis distinct shein ✓ - Forum SQL Server
- Sql lister les tables ✓ - Forum Programmation
- Requête sql pix - Forum Python
- Jointure sql ✓ - Forum MySQL
2 réponses
Je ne suis pas chez moi et le SQL je ne suis pas un grand lover de cette syntaxe, sinon pourquoi ne pas faire ton traitement en PHP ?
C'est fait à l'arrache mais ça doit fonctionner ><
De plus on peut l'optimiser très simplement !
$req = mysql_query( "SELECT * from tab ORDER by etudiant ASC"); $i =0; $currentU =""; while( $data = mysql_fetch_array($req)) { if ( $i == 0){ $currentU = $data['etudiant']; ++$i; } elseif ( $currentU == $data['etudiant']) { ++$i; } else { echo $currentU." - ".$i."<br/>"; $currentU = $data['etudiant']; $i = 1; } } echo $currentU." - ".$i."<br/>";
C'est fait à l'arrache mais ça doit fonctionner ><
De plus on peut l'optimiser très simplement !
Bonjour,
C'est possible d'avoir un screen du nom des colonnes y compris 1 ou 2 lignes de votre table car sans en voir le contenu c'est difficile :)
Et vous désirez afficher tout ou alors seulement quelques lignes en fonction d'un champ de recherche ou d'un début de mot ?
Car pour moi, la requête est en grande partie basé sur LIKE paramètre :
C'est possible d'avoir un screen du nom des colonnes y compris 1 ou 2 lignes de votre table car sans en voir le contenu c'est difficile :)
Et vous désirez afficher tout ou alors seulement quelques lignes en fonction d'un champ de recherche ou d'un début de mot ?
Car pour moi, la requête est en grande partie basé sur LIKE paramètre :
.... LIKE '".$_GET['etudiant']."%' ....
ton script ca marche super bien et je te remercie encore mais sauf que j'ai rencontré un petit soucis au fait j'ai mit un lien vers une autre page pour voir les articles des étudiants mais le problème c'est que ca n'affiche pas le bon truc une fois je clic sur l'étudiant .
Par exemple quand je clic sur Benoit ca affiche les articles de francois, quand je clic sur francois ca affiche les article de francis. Ca décale au fait. Voila ce que j'ai fait
<ul class="list">
<?php
$req = mysql_query( "SELECT * from etudiant ORDER by etudiant ASC");
$i =0;
$n = 0;
$currentU ="";
while( $data = mysql_fetch_array($req))
{
if ( $i == 0){
$currentU = $data['etudiant'];
++$i;
} elseif ( $currentU == $data['etudiant']) {
++$i;
} else {
?>
<li class="small-<?php echo $n++ % 2; ?>">
<a class="color" href="/etudiant/afficher.php?idetudiant=<?php echo $data['idetudiant']; ?>" title="<?php echo $data['etudiant'];?>">
<?php echo $currentU;?></a> - <?php echo $i ; ?> Article<?php if ( $i > 1 ) { ?>s<?php } ?>
</li>
<?php
$currentU = $data['etudiant'];
$i = 1;
}
}
?>
<li class="small-<?php echo $n++ % 2; ?>">
<a class="color" href="/etudiant/afficher.php?idetudiant=<?php echo $data['idetudiant']; ?>" title="<?php echo $data['etudiant'];?>">
<?php echo $currentU;?></a> - <?php echo $i ; ?> Article<?php if ( $i > 1 ) { ?>s<?php } ?>
</li>
</ul>