Requete probablement simple...

Eléphant du PHP | 357 Messages

03 mai 2005, 11:48

Bonjour,
Voila mon problème :
j'ai une table avec disons 6champs avec nom, prenom, mail, tel etc..
je voudrais selectionner uniquement les champs ou le nom et le prénom sont pas les memes.
exemple:
titi toto ....
titi toto ....
tutu tata ...
lionel grange ...

ma requete doit m'aficher :
titi toto ...
tutu tata ...
lionel grange ...

alors j ai essayer une requete du genre
SELECT DISTINCT nom prenom FROM table

avez vous une idée siouplé
merci d'avance en espérant avoir ete sufisemment clair

Mammouth du PHP | 19672 Messages

03 mai 2005, 12:05

SELECT DISTINCT nom, prenom FROM table
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 357 Messages

03 mai 2005, 12:08

oui j ai pas mis la virgule mais elle y est tout comme le ;
merci mais ca vient pas de ça :?

ViPHP
pjl
ViPHP | 2119 Messages

03 mai 2005, 12:11

Pour récupérer les données seulement si le nom est différent du prénom, il faut mettre une condition à la requête.
Condition dans une requete : http://www.phpdebutant.org/article117.php
Une initiation au langage SQL : http://chypre.ima.uco.fr/~cgi-ima/sql.html

Eléphant du PHP | 357 Messages

03 mai 2005, 12:17

merci Pjl
mais ce que je cherche a faire c'est eviter les doudlon donc eviter que un nom et un prénom (meme si ils sont les memes) soient présent qu une fois dans ma celection mais que tous les champs soit présent.
est il possible de faire :
SELECT * DISTINCT nom,prenom FROM table;

Eléphant du PHP | 357 Messages

03 mai 2005, 14:39

au fait je voudrai faire une requete du type :

Code : Tout sélectionner

SELECT * FROM table WHERE EXISTS (SELECT DISTINCT nom,prenom FROM table);
mais seulement ca marche pas.
En gros je voudrai évite les doublons sur les noms et prenoms mais pouvoir aficher aussi les autres champs associer :? c le desespour complet la si une ame charitable a une idée ...
Merci d avance

Eléphanteau du PHP | 14 Messages

03 mai 2005, 16:28

Tu pourrais pas mettre un exemple plus explicite de ce qu'il doit se passer et pas se passer parce que là j'ai un peu de mal à comprendre.

Si tu veux que par exemple quand tu as :

a a
a b
a a
b c

dans ta table, il n'affiche que :

a a
a b
b c

ben fais juste un group by :

Code : Tout sélectionner

SELECT * FROM `personne` GROUP BY nom, prenom
mais si tu veux qu'il t'affiche que les noms et prenoms distincts pour une même personne (donc que son nom et son prénom sont différents) tu dois faire un test :

Code : Tout sélectionner

SELECT * FROM `personne` WHERE nom != prenom
Note que tu peux aussi coupler les deux !
Doria

Eléphant du PHP | 357 Messages

03 mai 2005, 16:46

excusez moi :oops:
je vais essayer d etre plus explicite:
voici un exmple:
+---+---+------------+----------+
| a | a | [email protected] | 032556|
| a | a | [email protected] | 2122333|
| b | c | [email protected] | 2546464|
| b |a | [email protected]|13213131|
+---+---+------------+----------+

ce que je voudrai que ca affiche :

+---+---+------------+----------+
| a | a | [email protected] | 2122333|
| b | c | [email protected] | 2546464|
| b |a | [email protected]|13213131|
+---+---+------------+----------+

en espérant que c'est un peu plus clair
merci encore de vous prendre la tete avec moi sur ce sujet .

Eléphanteau du PHP | 14 Messages

03 mai 2005, 17:40

Alors je voulais d'abord te poser une question : sur quoi se base le choix de l'enregistrement qui sera affiché?
Je veux dire, pourquoi ne pas avoir affiché celui là :

| a | a | [email protected] | 032556|

Si c'est une question d'id, alors je suppose que tu prends le dernier id comme référence et ça te donnera ça :

Code : Tout sélectionner

SELECT nom,prenom,mail,max( id ) FROM table GROUP BY nom,prenom
Doria

Eléphant du PHP | 357 Messages

04 mai 2005, 10:06

merci doria ...
tu es super je pense que c'est ca je teste et je te confirme merci beaucoup.
j'avais zaper les propriétés de GROUP BY .
Un grand merci

Eléphant du PHP | 357 Messages

04 mai 2005, 11:12

Doria ca marche ta requette merci millle fois .
Toutefois il subsiste un probleme qui doit etre dû au config serveur :

-Sur un serveur Apache, top ca marche nikel si je fais un GROUP BY uniquement sur le nom prenom il m 'en choisi un au hasard je pense (avec ou sans le MAX), en gros il fait ce que je veux c'est de la bombe :lol:

-Mais ma requete doit s'executer sur un serveur microchiotte oups microsoft et là, si les champs ne sont pas rigoureusement les memes c'est à dire :
lorsqu'on fait un SELECT et un GROUP BY je dois avoir la meme chose.
Exemple:

Code : Tout sélectionner

SELECT nom,prenom FROM table GROUP BY nom,prenom
là ça marche nikel mais si dans le SELECT je rajoute un paramettre comme mail, si le nom et prenom sont les mêmes et que le mail diffère le serveur ne peut pas faire un choix entre les deux et donc me marque une erreur (celà dit c'est bien comme chose sauf que moi ce que je veux c'est afficher tout sauf les doublons pour les noms et prénoms le mail et autre ne sont la qu'a titre consultatif :? )

alors bon je pense que ce probleme vient du serveur plus que de la requete si toutefois une idée vous venez ... N'hesitez pas .
En tout cas Un grand merci a Doria qui m'a bien dépanner pour le coup et une requete que je suis pas pres d'oublier :wink: