Avatar billede minau Nybegynder
02. december 2003 - 12:22 Der er 15 kommentarer og
1 løsning

fjern intries det indeholder elementer fra en anden tabel

Hey.


Hvis jeg nu har nogen emails i den ene tabel (email) - og så har en anden tabel (notemail) med listen over de links der er døde.

hvordan får jeg fjernet de døde emails fra listen med emails?
Avatar billede detox Nybegynder
02. december 2003 - 13:16 #1
Hvis de har fælles id:

DELETE email FROM email, notemail WHERE email.id = notemail.id

ellers må du rette id til din fælles reference.
Avatar billede minau Nybegynder
02. december 2003 - 13:33 #2
ok. Så lad os sige at den ene tabel hedder sendemail og den anden notemail (det blev forvirrende med at der var to ting der hed email)

de kører ikke med id - men email som unik.

altså skulle den hede nget ala

DELETE * FROM sendemail, notemail WHERE sendemail.email = notemail.email


vil dette slette hele rækken (email, navn, hash osv.) i min sendmail tabel? eller vil det kun tømme felterne?
Avatar billede detox Nybegynder
02. december 2003 - 13:35 #3
Nej, sådan:

DELETE sendemail FROM sendemail, notemail WHERE sendemail.email = notemail.email
Avatar billede detox Nybegynder
02. december 2003 - 13:37 #4
Du kan ikke bruge DELETE *, da DELETE pr. definition sletter hele rækker.
Avatar billede minau Nybegynder
02. december 2003 - 18:33 #5
Fejl
SQL-forespørgsel : 

DELETE pmnl_address FROM pmnl_address, notmail WHERE pmnl_address.email = notmail.mail

MySQL returnerede:


You have an error in your SQL syntax near 'pmnl_address FROM pmnl_address, notmail WHERE pmnl_address.email = notmail.mail' at line 1

??? (nu er det enda de rigtige navne der er på :-)
Avatar billede minau Nybegynder
02. december 2003 - 18:42 #6
Jeg kører det over phpmyadmin - men det skulle vel ikke gøre nogen forskel?
Avatar billede detox Nybegynder
02. december 2003 - 18:55 #7
Og du er sikker på navnene? (email og mail)
Du kan prøve med en select først:

SELECT pmnl_address.* FROM pmnl_address, notmail WHERE pmnl_address.email = notmail.mail
Avatar billede minau Nybegynder
02. december 2003 - 19:08 #8
det virkede - men skal den så ikk hede

DELETE pmnl_address.* FROM pmnl_address, notmail WHERE pmnl_address.email = notmail.mail

- eller vil det også slette hel pmnl_adress tabellen? (jeg ville så nødigt lave en fejl)
Avatar billede detox Nybegynder
02. december 2003 - 19:13 #9
Næ, jeg forstår godt du ikke ønsker at slette andet end det du skal ;o)
Jeg forstår bare ikke at den anden forespørgsel fejler.
Hvis jeg var dig vil jeg nok lave en kopi af tabellen som backup, inden du eksperimenterer for meget.
Avatar billede detox Nybegynder
02. december 2003 - 19:15 #10
DELETE sendemail FROM sendemail, notemail WHERE sendemail.email = notemail.email

virker hos mig (med mine navne naturligvis)
Avatar billede detox Nybegynder
02. december 2003 - 19:31 #11
Prøv med USING:

DELETE FROM pmnl_address USING pmnl_address, notmail WHERE pmnl_address.email = notmail.mail
Avatar billede minau Nybegynder
02. december 2003 - 19:45 #12
SELECT nyhedsbrev.pmnl_address.* FROM nyhedsbrev.pmnl_address, nyhedsbrev.notmail WHERE nyhedsbrev.pmnl_address.email = nyhedsbrev.notmail.mail

virker

men

delete from nyhedsbrev.pmnl_address where email in (SELECT nyhedsbrev.pmnl_address.* FROM nyhedsbrev.pmnl_address, nyhedsbrev.notmail WHERE nyhedsbrev.pmnl_address.email = nyhedsbrev.notmail.mail)

er det ikke meget underligt????
Avatar billede detox Nybegynder
02. december 2003 - 19:50 #13
Har du prøvet med USING som jeg foreslog? Det virker osse her. Hvilken version kører du med?
Avatar billede minau Nybegynder
05. december 2003 - 09:25 #14
Using kan den heller ikke lide.

Hvordan finder jeg ud af hvilken version det er
Avatar billede detox Nybegynder
06. december 2003 - 01:39 #15
Det står jo på forsiden i phpMyAdmin.
Avatar billede minau Nybegynder
12. december 2003 - 11:16 #16
det var ver 2 - men det har vel ikke noget at gøre med at MySQL ikke kan finde ud af koden. Endte med dette

$query = "select mail from notmail";
$result = mysql_query($query) or die("Couldn't execute query");
while ($row= mysql_fetch_array($result)) {
  $notmail = $row["mail"];
    print "$notmail<br>";
  mysql_query("delete from pmnl_address where email = '$notmail'");
  mysql_query("delete from notmail where mail = '$notmail'");
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester