pb affichage en double

Eléphant du PHP | 335 Messages

11 juil. 2005, 17:14

Bonjour

Alors voila j'ai plusieurs enregistrments dans un champ de ma bdd.

Certains de ces enregistrements sont identiques.

J'ai écrit un script permettant d'affiche ma bdd, or je voudrais que les enregistrements qui sont identiques ne soint affichés qu'une seule fois

Cmt faire??

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

11 juil. 2005, 17:20

Dans ta requete SELECT, tu utilise DISTINCT

Code : Tout sélectionner

SELECT DISTINCT(champ) FROM table
http://dev.mysql.com/doc/mysql/fr/disti ... ation.html
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 335 Messages

11 juil. 2005, 17:27

merci je savais que DISTINCT existais, je l'ai meme essayé mais ca ne fonctionne pas comme je veux!!

le probleme est que je voudrais distinct seulement sur le champ tache
$str_requete = "SELECT id,tache,statut FROM liste WHERE periodicite='Six-Monthly'";

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

11 juil. 2005, 17:31

$str_requete = "SELECT id, DISTINCT(tache),statut FROM liste WHERE periodicite LIKE 'Six-Monthly'";
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 335 Messages

11 juil. 2005, 17:32

Je l'avais fait et j'ai obtenu une erreur, c'est pour ca que j'ai posté sur ce forum!!

Erreur SQL !
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DISTINCT(tache),statut FROM liste WHERE periodicite LIKE 'Six-M

Eléphant du PHP | 91 Messages

11 juil. 2005, 17:35

DISTINCT permet d'afficher les ligne doublons (ou plus) qu'une seul fois, c'est à dire les lignes ayant ayant le même id ET tache ET status

Dis nous ce que tu veux afficher, car un DISTINCT sur une seul colonne je ne comprend pas.

Eléphant du PHP | 91 Messages

11 juil. 2005, 17:38

DISTINCT permet d'afficher les ligne doublons (ou plus) qu'une seul fois, c'est à dire les lignes ayant ayant le même id ET tache ET status

Dis nous ce que tu veux afficher, car un DISTINCT sur une seul colonne je ne comprend pas.

Eléphant du PHP | 335 Messages

11 juil. 2005, 17:38

Et bien j'ai des id différents a chaque fois mais des taches qui ont le meme nom, c a d qu'une tache a plusierus id

Lorsque je veux afficher toutes les taches de ma table, je ne veux pas de doubles.

Voila!

Eléphant du PHP | 91 Messages

11 juil. 2005, 17:56

$str_requete = "SELECT DISTINCT tache FROM liste WHERE periodicite = 'Six-Monthly'"; 
Ton modéle physique de base de données est étrange.

J'ai aussi supprimer "statut" de la requête.

C'est ok pour toi comme ça ?

Eléphant du PHP | 335 Messages

11 juil. 2005, 18:14

J'ai besoin de faire select sur id et statut aussi!!

Eléphant du PHP | 91 Messages

11 juil. 2005, 18:24

DISTINCT et DISTINCTROW sont synonymes et indique que les doublons doivent être éliminés du résultat.

Si tu as ('tache1' , 10 , A) et ('tache1' , 11 , A ) il s'agit de deux enregistrements différents. Donc les deux enregistrements sont affichés.

Question si tu as les enregistrements suivant dans ta table :
('tache1' , 10 , A)
('tache1' , 11 , B)
('tache1' , 12 , B)
('tache2' , 13 , A)
('tache2' , 14 , B)
tu voudrais voir s'afficher quoi avec ta requête ?

Est ce que ceci repondrai pas un peu plus à ton souhait

Code : Tout sélectionner

SELECT tache , id , statutFROM liste WHERE periodicite = 'Six-Monthly'" ORDER BY tache

Eléphant du PHP | 335 Messages

11 juil. 2005, 18:31

par exemple jai
(1, tache1, invalide)
(2, tache1, invalide)
(3, tache2, invalide)

je voudrais afficher mes taches mais je veux
tache1
tache2
et pas:
tache1
tache1
tache2

mais j'ai besion de laisser id et statut dans mon select

Eléphant du PHP | 91 Messages

11 juil. 2005, 18:36

je voudrais afficher mes taches mais je veux
tache1
tache2
mais j'ai besion de laisser id et statut dans mon select
OK ..... pour la ligne "tache 1" tu veux quel id ? 1 ou 2 ou 1,5 ou autre ou PI ou le premier id (plus petit) ou plus grand ??????????????????? :?

Eléphant du PHP | 335 Messages

11 juil. 2005, 18:47

ah ah ah
mais id je m'en sers pour autre chose dans la suite du code

Eléphant du PHP | 91 Messages

11 juil. 2005, 18:51

Si tu veux tous les id tu dois :

- soit faire 2 requêtes ; une avec distinct l'autre sans
- soit un requête sans distinct et filtrer toi même les doublons applicativement en php.