MySql : Selectionner sans champ en double

Eléphanteau du PHP | 22 Messages

11 févr. 2009, 18:22

Bonjour,

J'ai une base du type :

Code : Tout sélectionner

CREATE TABLE IF NOT EXISTS `table` ( `id` int(11) NOT NULL AUTO_INCREMENT, `champ1` text NOT NULL, `champ2` text NOT NULL, `champ3` text NOT NULL, ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Je souhaite récupérer le champ1 des 10 premiers enregistrements : jusque là, ça va.

Mais je souhaite que le champ1 de ces enregistrements soient différents. Si deux enregistrements ont le même champ1, on n'en sélectionne qu'un seul.

Merci d'avance pour votre aide :)

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

11 févr. 2009, 19:28

Tu dois mettre le modificateur DISTINCT juste après la commande SELECT.

Exemple:

Code : Tout sélectionner

SELECT DISTINCT champ1 FROM table LIMIT 10;
Le "DISTINCT" signifie "distinct row" c'est à dire "enregistrement unique tiré parmi plusieurs enregistrements de mêmes valeurs"

DISTINCT est appliqué au niveau de tout un enregistrement et vérifient donc que tous les champs sélectionné sont différents.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphanteau du PHP | 22 Messages

11 févr. 2009, 19:31

Merci beaucoup !

Eléphant du PHP | 447 Messages

11 févr. 2009, 19:44

hello,

rien à voir avec ton topic, mais pour info tu peux rajouter ce site dans la liste de tes hénergeurs gratuits sans pub:

http://alwaysdata.com
Probably (only a) Human Problem?

Eléphanteau du PHP | 22 Messages

11 févr. 2009, 19:47

Merci pour l'adresse :)

Cependant, les caractéristiques sont insuffisantes par rapport aux autres hébergeurs... 10Mo de stockage et 1Go de traffic par rapport au reste ça fait trop light :)

Deuxième petite question : comment faire pour utiliser un DISTINCT sur un champ mais pas sur un second ?

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

11 févr. 2009, 19:58

Ce n'est pas possible avec DISTINCT. Mais peut être que ce qui te chagrine a une autre solution d'ordre logique. Faudra détailler la question.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphanteau du PHP | 22 Messages

11 févr. 2009, 20:00

Ah ! J'avais mal compris le fonctionnement, tout fonctionne en fait, desolé :)

Par contre, si vous pouvez m'aider pour cela maintenant : http://www.phpfrance.com/forums/voir_sujet-246175.php :)