Avatar billede henriktha Nybegynder
27. oktober 2003 - 13:38 Der er 19 kommentarer og
1 løsning

Slet fra tabel1 hvis id ikke findes i tabel2

Hvordan laver man denne query ??

Sammenlign felterne id i tabel1 & tabel2, og slet derefter felterne fra tabel1 hvis id ikke findes i tabel2

Håber nogen kan hjælpe !!
Avatar billede sone Nybegynder
27. oktober 2003 - 13:48 #1
delete from tabel1 WHERE id NOT IN (SELECT id FROM tabel2)
Avatar billede solja Nybegynder
27. oktober 2003 - 13:49 #2
DELETE * FROM tabel1 WHERE tabel1ID NOT IN (SELECT tabel2ID FROM tabel2)
Avatar billede solja Nybegynder
27. oktober 2003 - 13:50 #3
undskyld sone, så ikke dit svar :)
Avatar billede sone Nybegynder
27. oktober 2003 - 13:51 #4
der er IKKE noget som hedder "delete *" - det er forkert iflg. SQL-syntaksen (men at nogle databaser så tillader det alligevel...)
- man kan ikke slette enkelt-felter med delete, derfor giver * heller ikke mening
Avatar billede henriktha Nybegynder
27. oktober 2003 - 13:51 #5
Nix det virker ikke
Avatar billede sone Nybegynder
27. oktober 2003 - 13:52 #6
1. nå...
2. Hvorfor?
3. Kommer der en fejl...
4. Vær "lidt" mere beskrivelse!
Avatar billede sone Nybegynder
27. oktober 2003 - 13:53 #7
...beskrivende
Avatar billede henriktha Nybegynder
27. oktober 2003 - 13:58 #8
Skal jeg beskrive hvorfor JERES LØSNING ikke virker ???? *LOL*

You have an error in your SQL syntax near '* FROM order WHERE id NOT IN (SELECT id FROM bruger)' at line 1

Prøvede uden * og det gav dette resultat: You have an error in your SQL syntax near 'order WHERE id NOT IN (SELECT id FROM bruger)' at line 1
Avatar billede dawin_dk Nybegynder
27. oktober 2003 - 14:03 #9
du kører sikkert med en mySQL der ikke tillader subselects ... så er der ikke andet for end at dele de 2 andres løsning op...

hente en liste ud over alle id'ere du har på brugere....
og så slette ud fra den ... istedet for ud fra din subselect
Avatar billede henriktha Nybegynder
27. oktober 2003 - 14:13 #10
Tak dawin... men eh... hvordan gør man det ???
Avatar billede repox Seniormester
27. oktober 2003 - 14:21 #11
$table_one = mysql_query("SELECT id FROM table_one");
$table_two = mysql_query("SELECT id FROM table_two");

while($controller = mysql_fetch_object($table_one)) {

    while($identifier = mysql_fetch_object($table_two)) {

          if($controller->id != $identifier->id) {
                  mysql_query("DELETE FROM table_one WHERE id = '$controller->id'");
          }
}

Jeg ved sq ikke om det virker, men det ser da spøjst ud ? :)
Avatar billede henriktha Nybegynder
27. oktober 2003 - 14:23 #12
Kan man ik bare bruge:

$query = mysql_query("SELECT * FROM orders") or die (mysql_error());
while ($result = mysql_fetch_array($query)) {
echo $result['id'];
$a = mysql_query("select id from bruger where id = " . $result['id'] . "");
$antal = mysql_num_rows($a);
    if ($antal == "0") {
        mysql_query("delete from orders where id = " . $result['id'] . "");
        }
}
Avatar billede sone Nybegynder
27. oktober 2003 - 14:42 #13
Jeg er overbevist om at fejlen ligger i tabel-navnet. ORDER er et reserveret ord i SQL (ORDER BY).
Derfor mener jeg stadig at min svar er gyldigt!
Avatar billede henriktha Nybegynder
27. oktober 2003 - 15:14 #14
sone: Må desværre skuffe dig.... den virker stadig ikke... måske det er noget med ' der skal indsættes et sted.

prøvede selv: delete from orders WHERE id NOT IN (SELECT id FROM brugere)
med det resultat at den lavede en tøminig af orders tabellen... jeg må derfor sige at den IKKE virker !!!
Avatar billede henriktha Nybegynder
27. oktober 2003 - 15:15 #15
Nogen der har noget imod jeg bruger min egen da jeg nu at den virker ???
Avatar billede henriktha Nybegynder
27. oktober 2003 - 15:22 #16
Hmm.... der er måske ik nogen mer ???
Avatar billede henriktha Nybegynder
27. oktober 2003 - 15:34 #17
shady: Prøvede din underlige udgave...

$table_one = mysql_query("SELECT id FROM table_one");
$table_two = mysql_query("SELECT id FROM table_two");

while($controller = mysql_fetch_object($table_one)) {

    while($identifier = mysql_fetch_object($table_two)) {

          if($controller->id != $identifier->id) {
                  mysql_query("DELETE FROM table_one WHERE id = '$controller->id'");
          }
}

men den slettede dem der VAR ens ændrede så koden if($controller->id != $identifier->id) { til if($controller->id = $identifier->id) { men den slettede stadig dem der var ens ???

Godt forsøg, men syns måske det er lidt undeligt *LOL*
Avatar billede sone Nybegynder
27. oktober 2003 - 15:51 #18
Slette alt i orders:
De ID'er som er i orders - er det de samme ID'er som er i brugere... ellers er det jo klart at alt bliver slettet.
Avatar billede henriktha Nybegynder
27. oktober 2003 - 15:58 #19
Selvfølgelig... ved godt hvordan man arbejder med databaser, kunne bare ikke få koden til at virke.

Smid et svar så vi kan få spm lukket :-)
Avatar billede sone Nybegynder
27. oktober 2003 - 15:59 #20
svar
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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