webForumDet fria alternativet

Problem med delete

2 svar · 250 visningar · startad av aasah

aasahMedlem sedan mars 20033 451 inlägg
#1

Jag har tre tabeller i MySQL som samverkar enligt följande:

C (id, namn, ....)

B (id, namn, ..., C_id) C_id är foreign key till C's id

A (id, namn, ..., B_id) B_id är foreign key till B's id

id i A, B och C är en int auto_increment om det påverkar saken...

Pga otrolig klantighet från min sida vill jag nu plocka bort allting i A, B och C som "hör till" C.id=2. Jag vet, via select-sats, att detta gäller 11 <= B.id <= 35. Det finns ett stort antal rader i A som har dessa B_id:n.

Alltså skriver jag följande (i php):

  $query = "SELECT min(id), max(id) FROM B
            WHERE C_id = $id";
  $res = mysql_query($query) or die("Answer check");
  $minMax = mysql_fetch_array($res);
  echo "$minMax[0], $minMax[1]<BR>";
   $tst = "DELETE * FROM A
           WHERE B_id >= $minMax[0] AND B_id <= $minMax[1]";
   $res = mysql_query($tst) or die("Delete A");
   $tst = "DELETE * FROM B
           WHERE C_id = $id";
   $res = mysql_query($tst) or die("Delete B");
   $tst = "DELETE * FROM C
           WHERE id = $id";
   $res = mysql_query($tst) or die("Delete C");

Ger resultatet:

11, 35
Delete A

??? Var är felet?

@ndersMedlem sedan juni 200026 914 inlägg
#2

Det verkar alltså som att du har ett fel i den första delete-frågan.

Börja gärna med att skriva ut de färdiga SQL-frågorna till browsern med echo, så är det lättare att se hur de ser ut.

Du skriver också DELETE * FROM. Det är nog bara Access som gillar den där asterisken, så jag skulle ta bort den ur dina DELETE-frågor till att börja med.

aasahMedlem sedan mars 20033 451 inlägg
#3

@nders skrev:

... Du skriver också DELETE * FROM. Det är nog bara Access som gillar den där asterisken, så jag skulle ta bort den ur dina DELETE-frågor till att börja med.

Du har just hittat ett fel (eller snarast otydlighet) i min PHP-bok i avsnittet om MySQL... Tusen tack, @nders :birp, jag utgick ifrån att MySQL ville ha det enligt uppgift... :x

Genererad på 364 ms · cache AV · v20260730165559-full.f96bc7eb