Aller au contenu

probleme sur une requete mysql/php


Sujets conseillés

Posté (modifié)

Bonjour

Je galere depuis pas mal de temps sur une requete

voici la situation :

jai une table ( tunnel_fam ) qui regroupent les jointures de différentes tables :

1er champ >> la reference du produit ( qui se retrouve dans la table produit )

2e champ >> sa famille ( qui se retrouve dans la table famille )

3e champ >> son theme ( qui se retrouve dans la table theme )

4e champ >> son materiau ( qui se retrouve dans la table materiau )

( je ne cite pas l'id )

dans cette table j'ai donc pour chaque reference de produit toutes ces appartenance catégorie

ok donc on va dire que je recherche les familles dont les produit sont du theme1

j'ai donc pour cela dans l'exemple 6 enregistrements dont le theme est theme1 les autres sont du theme2 theme3 etc....:

ref 2 dont famille est bougie

ref 4 dont famille est bougie

ref 5 dont famille est voiture

ref 8 dont famille est ordinateur

ref 9 dont famille est ordinateur

ref 10 dont famille est pantalon

si je fais

	$req="SELECT famille FROM tunnel_fam WHERE theme='theme1'";
$res= mysql_query($req) or die ('Erreur : '.mysql_error() );
while($ligne = mysql_fetch_array($res))
{
$fam=$ligne['famille'];
echo $fam.'<br />';
}

il va me sortir

bougie

bougie

voiture

ordi

ordi

pantalon

moi j'aimerai qu'il me sorte

bougie

voiture

ordi

et pantalon

comment devrais etre ma requete pour cela selon vous

( désolé mais par peur de m'embrouiller dans les explications j'ai préféré marcher à l'exemple precis :) )

Modifié par Portekoi
Posté (modifié)

Salut et bienvenue sur le Hub,

Un simple Group By devrait suffire ...

ça donnerait dans ta requête :

$req="SELECT famille FROM tunnel_fam WHERE theme='theme1 GROUP BY famille'";

@+

Modifié par KnockedMaster
Posté

wow la honte

merci KnockedMaster

pourtant le group by se charge de trier ..... ok ok je confond avec order by, bienvenue chez les newbies, c souvent çà on se casse la tete alors que la soluce est simple, merci merci ;)

Posté
Salut et bienvenue sur le Hub,

Un simple Group By devrait suffire ...

ça donnerait dans ta requête :

$req="SELECT famille FROM tunnel_fam WHERE theme='theme1 GROUP BY famille'";

@+

J'aurai fait un disctinct, ça me parait plus approprié nan ?

$req="SELECT DISTINCT famille FROM tunnel_fam WHERE theme='theme1'";

Posté

C'est fonctionnel aussi, de là à dire qu'un DISTINCT est plus approprié, faut voir la structure exacte des tables, parce que pour le même prix tu peux utiliser UNIQUE aussi ...

Bref ... tous les chemins mènent à Rome, la preuve ...

@+

Posté (modifié)

c cool merci encore ;)

distinct , unique, group by .. je peux dormir tranquil, grace à toi j'ai pu pas mal avancer aujourd'hui, merci merci ;)

Modifié par dounawa

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...