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");
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.
... 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 , jag utgick ifrån att MySQL ville ha det enligt uppgift...
257 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91