Requète SQL (GROUP BY)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Requète SQL (GROUP BY)

Re: Requète SQL (GROUP BY)

par @rthur » 13 janv. 2015, 16:50

Encore mieux, sans requête imbriquée :
<?php
$mois_projet_precedent="";
$req = "SELECT * FROM projets ORDER BY Mois_Projets";
$result  = mysql_query($req) or die($req."<br />\n".mysql_error());

while($Mon_Resultat = mysql_fetch_array($result)) {
    
    if ($mois_projet_precedent != $Mon_Resultat['Mois_Projets']) {
        // C'est le 1er projet réalisé à cette date donc on affiche la date
        echo "<b>".$Mon_Resultat['Mois_Projets']."</b>" ; 
        $mois_projet_precedent = $Mon_Resultat['Mois_Projets'];
    }
    
    echo "hello<br />"; // là on affiche les données projet de $Mon_Resultat
    
}

Re: Requète SQL (GROUP BY)

par Hellowz » 13 janv. 2015, 15:46

Bonjour Arthur,
Merci de ta réponse,
je vais mettre la réponse sur le forum, au cas ou plus tard des personnes cherchent une solution.
<?php $req = "SELECT DISTINCT Mois_Projets FROM projets ORDER BY Mois_Projets";
$result  = mysql_query($req) or die($req."<br />\n".mysql_error());
while($Mon_Resultat = mysql_fetch_array($result)) { 

		$test = $Mon_Resultat['Mois_Projets'] ;
		echo "<b>".$test."</b>" ;   
		
		// REQUETE IMBRIQUEE DEBUT 
				$req2 = "SELECT * FROM projets WHERE Mois_Projets = '$test' ";
				$result2  = mysql_query($req2) or die($req2."<br />\n".mysql_error());
				while($Mon_Resultat2 = mysql_fetch_array($result2)) { 
				{
					echo "hello";
				}
		// REQUETE IMBRIQUEE FIN
} } ?>
Le code n'est pas du tout propre, mais c'est pour avoir une idée.
Bonne journée,

Re: Requète SQL (GROUP BY)

par @rthur » 13 janv. 2015, 13:27

Bonjour,

La solution pour faire cela c'est de faire ta requête avec un simple ORDER BY Date_Projets DESC.

Et au moment de l'affichage (quand tu boucles sur chaque résultat), tu regardes si la valeur Date_Projets précédente est égale à la valeur Date_Projets courante.
Si ce n'est pas le cas, ça veut dire que tu es sur le 1er enregistrement d'un nouveau jour et donc il faut afficher une nouvelle section avec le nom de ce jour, et tu mets à jour une variable date_projets_precedente avec la Date_Projets courante.

Requète SQL (GROUP BY)

par Hellowz » 13 janv. 2015, 13:17

Bonjour tout le monde,
En espérant, que vous puissiez m'aider, mais je n'en doute pas !

Je ne vois pas trop comment faire. Donc je vous explique, c'est tout simple.
J'ai une table projets(Id_Projets, Nom_Projets, Prix_Projets, Date_Projets).

je voudrais afficher sur ma page l'architecture suivant :

------------ Date_Projets (12-01-2015) ---------
---Titre_Projets + Prix_Projets--
---Titre_Projets + Prix_Projets--
---Titre_Projets + Prix_Projets--

------------ Date_Projets (13-01/2015)---------
---Titre_Projets + Prix_Projets--
---Titre_Projets + Prix_Projets--
---Titre_Projets + Prix_Projets--

En gros, le problème actuel avec la clause "GroupBy", c'est que ça marche, mais ça ne détailles pas les projets et le prix pour chaque date.
Donc si vous avez une solution avec le "groupby" ou avec une autre méthode, je me ferais un plaisir de la mettre en place.

Merci davance,
Hellowz