Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
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 30/05/2011, 11h11   #1
Invité(e)
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Par défaut éviter doublon avec rand() mysql

Bonjour,

voila mon problème je fais une requête sql avec un rand();

le tri aléatoire fonctionne, mais il peut tiré plus d'une fois la même valeur
je voudrais savoir comment faire pour ne pas avoir de doublon dans le retour des résultats merci.

vois ma fonction :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
		    public function aleatoire()
    {
 
 
		$result = mysql_query("SELECT F.TIT_ID, F.TITLE AS TITLE , F.IMAGE_URL AS IMAGE_URL, FD.Nom AS Nom_Producteur
        FROM Film F
		INNER   JOIN Films_Director_Link FDL   
                  ON F.TIT_ID=FDL.Film_ID
                JOIN Films_Director FD
                  ON FDL.Director_ID=FD.Films_Director_ID
                JOIN Films_Categories_Link FCL
                  ON FCL.Film_ID=FDL.Film_ID
                JOIN Films_Categorie FC 
                  ON FCL.Categories_ID=FC.Categories_ID
				WHERE F.NOUVEAUTE=1   ORDER BY Rand()");
		while ($row = mysql_fetch_assoc($result))
		{ 
		$lines[] = $row;  
 
		}
 
		return $lines;
	}
  Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 11h53   #2
Membre du Club
 
Julien TANT
Inscription : janvier 2007
Messages : 82
Détails du profil
Informations personnelles :
Nom : Julien TANT
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2007
Messages : 82
Points : 51
Points : 51
Envoyer un message via MSN à AoSiX
Bonjour,

tu peux utiliser le mot clef DISTINCT sur F.TIT_ID :

Code :
SELECT DISTINCT(F.TIT_ID)
... ainsi tu n'auras pas de doublons
AoSiX est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 12h05   #3
Invité(e)
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
j'ai déjà testé sa ne fonctionne pas toujours des doublons
merci
  Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 13h15   #4
Membre à l'essai
 
Homme
Inscription : janvier 2009
Messages : 36
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : janvier 2009
Messages : 36
Points : 21
Points : 21
Mais attends tu as des doublons dans ta table film ??
kayoum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 14h01   #5
Membre du Club
 
Julien TANT
Inscription : janvier 2007
Messages : 82
Détails du profil
Informations personnelles :
Nom : Julien TANT
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2007
Messages : 82
Points : 51
Points : 51
Envoyer un message via MSN à AoSiX
Re-Bonjour,

je pense que la requêtes suivante va faire ton bonheur :

Code SQL :
1
2
3
4
5
6
7
8
9
SELECT
    F.TIT_ID,
    F.TITLE AS TITLE,
    F.IMAGE_URL AS IMAGE_URL,
    GROUP_CONCAT(FD.Nom ORDER BY FD.Nom ASC SEPARATOR ', ')
FROM Film F
INNER JOIN Films_Director_Link FDL ON F.TIT_ID=FDL.Film_ID
JOIN Films_Director FD ON FDL.Director_ID=FD.Films_Director_ID
WHERE F.NOUVEAUTE=1 GROUP BY F.TIT_ID ORDER BY Rand()

N’hésites pas si tu as d'autres questions, je suis une chaise derrière toi ...
AoSiX est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Mettre Résolu
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h14.


 
 
 
 
Partenaires

Hébergement Web