MYSQL - SELECT

Résolu/Fermé
jean-yvon Messages postés 108 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 5 juillet 2009 - 10 mars 2009 à 08:01
jean-yvon Messages postés 108 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 5 juillet 2009 - 11 mars 2009 à 11:13
Bonjour,
J'ai une bd avec une table et 5 champs.
Il m'arrive d'avoir le même enregistrement sur deux lignes. Comment les différencier dans une requête "select"
select one n'existe pas!
Et si j'écris:
select from ma_table where monchamp1 ='10' and monchamp2 ='12' and monchamp3 ='xxx' ect jusqu'au bout pour les 5 champ: MYSQL me prend tout les enregistrements qui correspondent à ces critères.
comment faire pour n'en avoir qu'un?
merci
@+
JY

8 réponses

InFiniT. Messages postés 98 Date d'inscription lundi 23 février 2009 Statut Membre Dernière intervention 3 avril 2009 26
10 mars 2009 à 08:04
Bonjour
Si j'ai bien compris avec ta requête cela te renvoi plusieurs résultats les mêmes c'est bien ca?
Si oui en utilisant la commande DISTINCT ca t'evitera d'avoir des doublons.
ex : SELECT DISTINCT (nom_du_champ), ......
Apres je ne sais pas si j'ai bien tout compris :)
Bon courage
0
jean-yvon Messages postés 108 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 5 juillet 2009 10
10 mars 2009 à 08:16
Merci InFiniT
je ne connais pas la syntaxe de SELECT DISTINCT et je ne la trouve pas dans la doc mysql. Est-ce que j'abuserais de te la demander?
Merci
@+
JY
0
InFiniT. Messages postés 98 Date d'inscription lundi 23 février 2009 Statut Membre Dernière intervention 3 avril 2009 26
10 mars 2009 à 08:29
Ba en fait le SELECT DISTINCT ca t'evite de retourner plusieurs réponses les mêmes pour le champ concerné.
C'est à dire que avec tes critères de selections, si tu as plusieurs réponses les mêmes qui s'affichent, à l'aide du distinct elles s'afficheront qu'une fois.

Désolé j'ai un peu de mal à m'expliquer...
J'ai trouver vite fait ca sur internet j'espère que cela pourra t'aider : http://sql.1keydata.com/fr/sql-distinct.php
Sinon hesite pas a poser des questions :)
0
jean-yvon Messages postés 108 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 5 juillet 2009 10
10 mars 2009 à 14:10
merci!
oui, ça éclaire.
Est-ce que je peux écrire "delete distinct monchamp1='100' from matable where monchamp2='2009-10-03'" ce qui permettrait de ne supprimer qu'une seule ligne de monchamp1 contenant 100.
Ou encore comment ne pas supprimer les doublons?
Je cherche mais je ne trouve pas (en plus la syntaxe à l'air différent d'une version à une autre)
merci beaucoup!
@+
JY
0
est ce que les lignes ont la même clé??
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
InFiniT. Messages postés 98 Date d'inscription lundi 23 février 2009 Statut Membre Dernière intervention 3 avril 2009 26
10 mars 2009 à 16:30
Pour ne pas supprimer les doublons suffit que tu ne mette pas distinct.... lol
Sinon pour le delete je croi pas que tu en est besoin si tu met en critère de supprimer genre ton champ 1 = "100" et champ 2 = "date" ca te supprimera que les champs concernées.
Sinon je ne vois pas vraiment ce que tu cherche...
0
jean-yvon Messages postés 108 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 5 juillet 2009 10
10 mars 2009 à 18:27
bonsoir aux deux et aux autres!

je n'ai pas de clef.(autrement cela serait facile).

Donc, j'ai une base de données simple un champ "date", un champ "montant", un champ "payement" et un champ "ventilation".

Il arrive que le même jour ma femme et moi faisons un retrait identique donc tous les champ de la base sont remplie de la même façon. il y a aussi deux prélèvements d'assurance du même montant qui arrive le même jour.
je ne veux pas supprimer ces doublons en même temps parce que la banque ne les mets pas forcement sur le même bordereau et comme j'aime avoir des comptes justes, je voudrais trouver une requête qui ne m'en supprime qu'un.
J'avais pensé ça: delete(select distinct FROM matable WHERE matable.date='" & madate1 & "' AND matable.montant='" & monmontant & "....ect)

je ne pense pas que mysql supporte cette syntaxe. Voilà ou j'en suis! j'avoue que je sèche.....
@+
JY
0
InFiniT. Messages postés 98 Date d'inscription lundi 23 février 2009 Statut Membre Dernière intervention 3 avril 2009 26
11 mars 2009 à 08:10
Bonjour
Je viens de trouver sur internet un petit tutorial qui pourrait t'aider avec la syntaxe DELETE.Normalement tu n'as pas besoin de mettre de SELECT après il me semble.
Voila j'espère que cela pourra t'aider :)

https://phpsources.net/tutoriel-delete.htm
0
jean-yvon Messages postés 108 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 5 juillet 2009 10
11 mars 2009 à 11:13
Salut,
ça y est! J'ai la solution!

la requête que voici enlève un enregistrement même si il en existe plusieurs identique.

delete from matable where matable.monchamp1 ="mavaleur" limit 1

c'est bête, c'est écrit en gros dans la syntaxe mysql.
Je vous remercie tous les deux de m'avoir aidé.
@+
JY
0