identificarea linii identice dintr un tabel(o neclaritate )

Ai o întrebare legată de PHP? Incercăm să îi găsim soluţie. Sau poate doar vrei să publici un cod interesant.

Moderatori: Zamolxe, Moderatori

mandriva2007
Senior Member
Mesaje: 254
Membru din: Mar Oct 02, 2007 2:26 pm

identificarea linii identice dintr un tabel(o neclaritate )

Mesajde mandriva2007 » Lun Ian 14, 2008 1:53 am

Ultima oară modificat Sâm Ian 19, 2008 1:48 am de către mandriva2007, modificat 1 dată în total.



Avatar utilizator
gabysolomon
Senior Member
Mesaje: 743
Membru din: Dum Apr 09, 2006 11:39 am
Localitate: Bacau
Contact:

Mesajde gabysolomon » Lun Ian 14, 2008 2:13 am

| | |

|

mandriva2007
Senior Member
Mesaje: 254
Membru din: Mar Oct 02, 2007 2:26 pm

da

Mesajde mandriva2007 » Lun Ian 14, 2008 11:06 pm


whooper
Senior Member
Mesaje: 866
Membru din: Mar Apr 05, 2005 9:58 pm
Localitate: Toronto ON

Mesajde whooper » Mar Ian 15, 2008 3:03 am

daca sunt toate informatiile identice nu poate sa le stearga :) pur si simplu ca baza de date nu stie pe care dintre ele sa o lase acolo .. Orice ai pune in clauza WHERE, conditiile de cautare sunt identice si valabile pentru ambele linii duplicat.

Poti sa copiezi tabela intr-o alta tabela noua adaugand un camp (id - autoincrement), dupa care rulezi un filtru sa-ti zica care anume linii ai informatie duplicat si doar ID-uri diferite. Abia atunci selectezi o linie care ramane si stergi liniile duplicat unde id-ul difera de cel selectat.
Join The Forums - Time Well Wasted!

Avatar utilizator
mihaitha
Senior Member
Mesaje: 2383
Membru din: Vin Mai 04, 2007 12:40 pm
Localitate: Sibiu
Contact:

Mesajde mihaitha » Mar Ian 15, 2008 9:24 am

Nu stiu daca merge la fel in Pg, dar in MySQL o faci asa:
[php]<?
$q = mysql_query('SELECT nume, suma, regiune, COUNT(*) as count FROM tabela GROUP BY nume, suma, regiune');
while ($r = mysql_fetch_object($q))
mysql_query('DELETE FROM tabela WHERE nume = \'' . $r->nume . '\' AND suma = \'' . $r->suma . '\' AND regiune = \'' . $r->regiune . '\' LIMIT ' . ($r->count - 1));
?>[/php]
Cred ca o poti porta linistit in PG cu aceleasi sintaxe, numai nu stiu cum se comporta PG la GROUP BY. Anyway, fa un backup la tabela inainte, de siguranta. Sporuri.

Praetor
PHPRomania Supporter
Mesaje: 10
Membru din: Joi Ian 10, 2008 6:01 pm

Mesajde Praetor » Mie Ian 16, 2008 11:52 am


mandriva2007
Senior Member
Mesaje: 254
Membru din: Mar Oct 02, 2007 2:26 pm

raspuns

Mesajde mandriva2007 » Sâm Ian 19, 2008 12:38 am

multumesc oricum .merge si in pg.da e vorba de niste key pe tabela ,constrainturi,dar a mniste probleme cu ele.era simplu cu vi editorul din linux.le exportam alea in alt fiser le stergeam pe alea duplicate din tabela si dupa ia o comanda de unloud from fisierumeu.txt to cu vi editorul si le importam din nou in tabel de data asta era uimportat daor campul acela care se repeta.mersi inca odata si numai bine.

mandriva2007
Senior Member
Mesaje: 254
Membru din: Mar Oct 02, 2007 2:26 pm

o intrebare banala dar vreau sa inteleg

Mesajde mandriva2007 » Sâm Ian 19, 2008 1:14 am


Avatar utilizator
saitek
Senior Member
Mesaje: 454
Membru din: Dum Sep 23, 2007 6:40 am

Mesajde saitek » Sâm Ian 19, 2008 9:30 am

:lol: L-a pus din cauza "concatonarii"...
mysql_query('DELETE FROM `tabela` WHERE `nume` = "' . $r->nume . '" AND `suma` = "' . $r->suma . '" AND `regiune` = "' . $r->regiune . '" LIMIT ' . ($r->count - 1));

adica acel \,face ca practic php sa ignore acel caracter.
|
GOOGLE = un mare prost

mandriva2007
Senior Member
Mesaje: 254
Membru din: Mar Oct 02, 2007 2:26 pm

mersi mult

Mesajde mandriva2007 » Dum Ian 20, 2008 2:32 pm

e ca si cum acolo as avea un comentariu care nue compilat.

dechim
Senior Member
Mesaje: 1486
Membru din: Mar Mai 10, 2005 11:53 pm
Localitate: Drobeta Turnu Severin

Mesajde dechim » Dum Ian 20, 2008 2:49 pm



Înapoi la “Cod PHP”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 13 vizitatori