Post Reply 
 
Thread Rating:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Brisanje duplih mailova iz više tablica u SQL-u
Author Message
Son Goku Offline
Novi korisnik
*

Posts: 41
Joined: Jan 2008
Reputation: 0
Post: #1
Brisanje duplih mailova iz više tablica u SQL-u
Pozdrav,

imam nekoliko tablica sa gomilama mailova, a neki mailovi koji su u prvoj tablici su i u drugoj i trečoj tablici, itd.

Sada bi htio ako je moguće da obrišem te duple mailove, iz svih tablica, znači ako je neki mail u 1., 2. i 3. tablici da ostane samo u 1., odnosno čak nije ni bitno u kojoj tablici će ostati, samo da se obriše iz ostalih tablica i ostane u jednoj tablici, bilo kojoj.

Da li je to moguće?

Tražio sam po netu, ali nema baš nekih primjera...

Hvala i pozdrav
(This post was last modified: 18-09-2013 11:27 AM by Son Goku.)
18-09-2013 11:25 AM
Find all posts by this user Quote this message in a reply
Gogy Offline
____
*

Posts: 2,378
Joined: Feb 2006
Post: #2
RE: Brisanje duplih mailova iz više tablica u SQL-u
Vjerojatno ima elegantnijih načina ali ja bi to ovako napravio (iz glave, sorry ako ima grešaka):

PHP Code:
$query mysql_query"SELECT email from prvatablica");
while (
$row=mysql_fetch_array($query)) {
    
mysql_query("DELETE FROM drugatablica WHERE email = $row['email']");
    
mysql_query("DELETE FROM trecatablica WHERE email = $row['email']");


Pravila foruma | Twitter - Facebook - Google+ |


Radar404 <- moj blog
19-09-2013 09:48 PM
Visit this user's website Find all posts by this user Quote this message in a reply
Son Goku Offline
Novi korisnik
*

Posts: 41
Joined: Jan 2008
Reputation: 0
Post: #3
RE: Brisanje duplih mailova iz više tablica u SQL-u
hvala, ali javlja greške ispored oba mysql_query...
20-09-2013 10:35 AM
Find all posts by this user Quote this message in a reply
Gogy Offline
____
*

Posts: 2,378
Joined: Feb 2006
Post: #4
RE: Brisanje duplih mailova iz više tablica u SQL-u
PHP Code:
mysql_query("DELETE FROM drugatablica WHERE email = '".$row['email']."' ");
 
mysql_query("DELETE FROM trecatablica WHERE email = '".$row['email']."' "); 

Malo navodnike samo popraviš

Pravila foruma | Twitter - Facebook - Google+ |


Radar404 <- moj blog
21-09-2013 01:04 PM
Visit this user's website Find all posts by this user Quote this message in a reply
Son Goku Offline
Novi korisnik
*

Posts: 41
Joined: Jan 2008
Reputation: 0
Post: #5
RE: Brisanje duplih mailova iz više tablica u SQL-u
Hvala, čini se da radi sada, ali mi kad pokrenem skriptu javlja mi se sljedeća greška

Quote:504 Gateway Time-out
The server didn't respond in time.

Vjerovatno zato jer u jednoj tablici imam oko 500 000 mailova, u drugoj oko 100 000, a u ostalima nešto manje pa se server previše muči...

Može li se to nekako srediti?
23-09-2013 01:34 PM
Find all posts by this user Quote this message in a reply
Gogy Offline
____
*

Posts: 2,378
Joined: Feb 2006
Post: #6
RE: Brisanje duplih mailova iz više tablica u SQL-u
Probaj staviti sljedeće ispred tog koda.
PHP Code:
set_time_limit(0); 

To bi trebalo maknuti vremenski limit PHP-u.

Pravila foruma | Twitter - Facebook - Google+ |


Radar404 <- moj blog
23-09-2013 05:37 PM
Visit this user's website Find all posts by this user Quote this message in a reply
Gogy Offline
____
*

Posts: 2,378
Joined: Feb 2006
Post: #7
RE: Brisanje duplih mailova iz više tablica u SQL-u
Ako to ne radi, jedna od solucija je napraviti Javascript/Ajax skriptu koja bi pozivala PHP kod koji bi imao limitirani broj mailova koje izbriše.
Tako da bi se PHP kod pozivao u intervalima kroz javascript te bi se time smanjilo vrijeme PHP-u potrebno za obradu podataka. Recimo ako bi limitirali
broj na npr. 1000 mailova, to se za čas odradi, i onda se javascriptom pozove ponovno.

Dakle PHP kod bi izgledao otprilike ovako:

delete.php
PHP Code:
$start $_POST['start'];
$end $_POST['start']+1000;
$query mysql_query"SELECT email from prvatablica LIMIT ".$start.",".$end."");
while(
$row=mysql_fetch_array($query)) {
   
mysql_query("DELETE FROM drugatablica WHERE email = '".$row['email']."' ");
   
mysql_query("DELETE FROM trecatablica WHERE email = '".$row['email']."' "); 


A za ajax bi mogao koristit jquery (nadam se da znaš kako ga includat na stranicu, ako ne proguglaj) pa bi ti to izgledalo ovako:


Code:
var cnt = 0;
function brisiMailove(cnt) {

$.post( "delete.php?start="+cnt, function( data ) {
    brisiMailove(cnt+1000); // Kad obrise 1000 komada, krece po novih 1000 komada
  });  
}

brisiMailove(cnt);

Nisam testirao ali tako nekako otprilike...

Pravila foruma | Twitter - Facebook - Google+ |


Radar404 <- moj blog
23-09-2013 07:20 PM
Visit this user's website Find all posts by this user Quote this message in a reply
Son Goku Offline
Novi korisnik
*

Posts: 41
Joined: Jan 2008
Reputation: 0
Post: #8
RE: Brisanje duplih mailova iz više tablica u SQL-u
PHP Code:
set_time_limit(0); 
ne pomaže :(

Onda sam probao ovako
PHP Code:
$start 0;
$end 1000;
$query mysql_query"SELECT email from prvatablica LIMIT ".$start.",".$end."");
while(
$row=mysql_fetch_array($query)) {
   
mysql_query("DELETE FROM drugatablica  WHERE email = '".$row['email']."' "$mk_conn) or die(mysql_error());

znači direktno sam pokrenuo skriptu u browseru, i ponovo mi se nakon nekog vremena pojavi onaj error
Quote:504 Gateway Time-out
The server didn't respond in time.
Tako da mislim da ni preko Javascript/Ajax ne bi radilo, ili se varam?

prvatablica ima oko 500 000 mailova
drugatablica ima oko 100 000 mailova
24-09-2013 10:14 AM
Find all posts by this user Quote this message in a reply
Gogy Offline
____
*

Posts: 2,378
Joined: Feb 2006
Post: #9
RE: Brisanje duplih mailova iz više tablica u SQL-u
Da li ti je to negdje lokalno ili na nekom serveru?
Malo mi je čudno da ima problema sa brisanjem 1000 redaka iz baze. Ako je na nekom hostingu probaj kontaktirat hosting providera da ti objasni iz kojeg razloga ti izbacuje taj error.

Probaj tako kako si napravio sa nekim manjim brojem, da vidiš gdje ti je granica.

Pravila foruma | Twitter - Facebook - Google+ |


Radar404 <- moj blog
24-09-2013 11:39 AM
Visit this user's website Find all posts by this user Quote this message in a reply
Son Goku Offline
Novi korisnik
*

Posts: 41
Joined: Jan 2008
Reputation: 0
Post: #10
RE: Brisanje duplih mailova iz više tablica u SQL-u
Na serveru. Ma problem se javlja kada pokušavam obrisati tih 1000 redaka iz tablice koja ima 500 000 mailova, tu dođe do greške, a kod ovih manjih tablica sa po oko 20, 30k mailova nema greške...
24-09-2013 02:24 PM
Find all posts by this user Quote this message in a reply
Post Reply 


Forum Jump:


User(s) browsing this thread: 1 Guest(s)