PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 27-05-2010 09:03:52

Capi
Membre
Inscription : 03-03-2010
Messages : 45

Effacer certaines valeurs d'une table SQL

Bonjour à tous !

J'ai une table, avec des doublons.
Je voudrais pouvoir effacer les valeurs qui sont en double, c'est à dire pas seulement enlever celui qui est en trop, mais faire disparaitre la deuxième occurrence mais aussi la première.
Et j'avoue que je ne sais pas trop comment m'y prendre.
J'ai bien pensé à lister toute celles qui sont en doubles, et ensuite à faire un delete where.....
MAIS je ne sais pas que placer vers le where, puisque j'aurais une liste :s

merci pour votre aide !

Hors ligne

#2 27-05-2010 11:32:34

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Effacer certaines valeurs d'une table SQL

Il te faut faire un DELETE avec le where qui convient pour chaque critère si tu veux être sûr de ne pas te planter.
Sinon tu peux utiliser une logique booléenne en utilisant des OR entre les critères.

Hors ligne

#3 31-05-2010 10:49:40

Capi
Membre
Inscription : 03-03-2010
Messages : 45

Re : Effacer certaines valeurs d'une table SQL

Je n'y arrive pas sad

Voici mon code si quelqu'un a une idée :

$sql = "DELETE * FROM villesfr WHERE ville IN (SELECT ville FROM villesfr HAVING COUNT(ville)>1)" ;
mysql_query($sql,$connexion)

merci

Hors ligne

#4 31-05-2010 11:08:38

Capi
Membre
Inscription : 03-03-2010
Messages : 45

Re : Effacer certaines valeurs d'une table SQL

Je fais une deuxième tentative d'un autre type :

$strsql = "CREATE TABLE tabletemp SELECT ville FROM villesfr GROUP BY ville HAVING COUNT(ville) < 2";
mysql_query($strsql, $conn_db);
//Vidage de la table d'origine
mysql_query("DELETE FROM villesfr", $conn_db);
//Réinjection des enregistrements
$strsql = "INSERT INTO villesfr SELECT * from tabletemp";
mysql_query($strsql, $conn_db);

Mais là ça ne me prend aucune valeur :s
hors j'ai des doublons je le sais sad

Hors ligne

#5 31-05-2010 12:02:58

Alnoss
Modérateur absent
Lieu : 06 - PACA
Inscription : 11-05-2009
Messages : 541
Site Web

Re : Effacer certaines valeurs d'une table SQL

Coucou,

Pour ton cas avec le vidage, c'est normal que tu n'ais pas d'erreur si ton champs "ville" n'est pas en "UNIQUE" dans sql.

Ensuite, il faut qu'effectivement, tu fasses un listing de tes "ville" avec un Count(ville) > 1
Et dans la boucle (comme si tu voulais les afficher), tu mets une requête DELETE plutot qu'un echo $date['var'].

L'explication est concise, mais vu que tu as l'air de savoir de quoi tu parles.... [demande des précisions si tu comprends pas]


MERCI de lire le mode d'emploi avant de poster !!

Hors ligne

#6 31-05-2010 12:24:43

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Effacer certaines valeurs d'une table SQL

Saluton,
A lire, http://sqlpro.developpez.com/cours/doublons/, impérativement.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#7 31-05-2010 14:23:17

Capi
Membre
Inscription : 03-03-2010
Messages : 45

Re : Effacer certaines valeurs d'une table SQL

Je l'avais lu mais je galerais quand même, je m'y suis replongé, inspiré et voici avec quoi je m'en sors :

$strsql = "SELECT DISTINCT *
FROM villesfr T1
WHERE  EXISTS (SELECT *
               FROM   villesfr T2
               WHERE  T1.id <> T2.id
               AND  T1.ville = T2.ville)";

$query = mysql_query($strsql, $conn_db);
while ($data = mysql_fetch_assoc($query))  
{echo 'Donnee <Br>';}

Après un long chargement (peut être dû au fait que j'ai 38 000 entrées) j'obtiens :

Warning: mysql_query() [function.mysql-query]: Unable to save result set in /......  on line 19

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /..... on line 20

je ne trouve pas beaucoup d'infos sur la première erreur :s vous avez une idée ?

PS : le boucle je fais une petit echo pour voir si ça fonctionne avant de s'attaquer au delete ^^

Dernière modification par Capi (31-05-2010 14:24:06)

Hors ligne

#8 31-05-2010 14:31:58

Capi
Membre
Inscription : 03-03-2010
Messages : 45

Re : Effacer certaines valeurs d'une table SQL

Si ça peut aider, j'ai rajouté un petit or die  après le $query et j'obtiens :

Warning: mysql_query() [function.mysql-query]: Unable to save result set in /.....  on line 19
Query execution was interrupted

Hors ligne

#9 31-05-2010 15:06:44

Alnoss
Modérateur absent
Lieu : 06 - PACA
Inscription : 11-05-2009
Messages : 541
Site Web

Re : Effacer certaines valeurs d'une table SQL

1. Distinct * .... avec ce que l'on sait sur la guerre des étoiles

2. from villesfr T1 ??? c'est quoi le T1, il est lié comment à villesfr ?

3. while (.....)    {echo 'Donnee <br>';} il va te renvoyé n ligne marqué "Donnee" (n étant le nombre de résultat de ton select)
Je te conseille donc de mettre un echo $data['villesfr'];


MERCI de lire le mode d'emploi avant de poster !!

Hors ligne

#10 31-05-2010 18:59:48

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Effacer certaines valeurs d'une table SQL

La table villefr étant mise en jointure avec elle-même il faut lui donner deux alias T1 et T2.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

Pied de page des forums