eregi Posted July 6, 2009 Report Share Posted July 6, 2009 (edited) Tātad ir divas tabulas, kuras izskatās aptuveni šādi. tb1 | Id | Cover | Date | tb2 | Id | tb1_id | File | Iekš tb1.Cover, glabā bildes nosaukumu - x.jpg Iekš tb2.File, glabā kādu mp3 faila nosaukumu - xyz.mp3 Tabulu saturs tb1 | 1 | aaa.jpg | timestamps | | 2 | bbb.jpg | timestamps | tb2 | 1 | 1 | fails1.mp3 | | 2 | 1 | fails2.mp3 | | 3 | 1 | fails3.mp3 | | 4 | 2 | fails4.mp3 | | 5 | 2 | fails5.mp3 | | 6 | 2 | fails6.mp3 | | 7 | 2 | fails7.mp3 | ( kolonnai File ar tb2.Id nav nekāda saistība. Tātad vēlos dzirdēt labāko risinājumu, kā dzēst visus ierakstus, kas satur noteikto Id, tas būtu, dzēšot ar id 1 pazustu visi ieraksti no tb1.Id = 1 un no tb2.tb1_id = 1; ( Kā šo var paveikt ar vienu kvēriju, izmantojot inner join. ) ? DELETE FROM db.tb1, db.tb2 USING db.tb1 INNER JOIN db.tb1 WHERE tb1.Id='$ids' AND tb2.tb1_id='$ids'; ( šeit ir liels samurgojums, un šķiet, ka nav pareizi ) Tālāk interesētu,kā veikt dzēšanu? $SQL = mysql_query("SELECT * FROM db.tb1 LEFT OUTER JOIN db.tb2 ON tb1.Id = tb1_id WHERE tb2.tb1_id = '$ids'"); while($row = mysql_fetch_array($SQL)) { if(file_exists('/var/img/'.$row['Cover'].'')) { unlink('/var/img/'.$row['Cover'].''); } unlink('/var/mp3/'.$row['File'].''); } mysql_query("DELETE FROM db.tb1, db.tb2 USING db.tb1 INNER JOIN db.tb1 WHERE tb1.Id='$ids' AND tb2.tb1_id='$ids'"); vai šāds variants derētu? Tātad interesē vai Select qvērijs ir ok vai Delete qvērijs ir ok vai nav labāks risinājums tajā kodā? Kā jau vienmēr - atvainojos, ja esmu nesakarīgi kaut ko uzrakstījis. Jau iepriekš pateicos! EDIT: SQL tags nestrādā? Edited July 6, 2009 by eregi Quote Link to comment Share on other sites More sharing options...
marcis Posted July 6, 2009 Report Share Posted July 6, 2009 Es te vispār tā īsti neredzu vajadzību lietot JOIN. SELECT tb1.Cover, tb2.File FROM `tb1`, `tb2` WHERE tb1.id=$ids AND tb2.tb1_id=tb1.id LIMIT 1 Dzēšanas kverijā tas pats + paskaties pieprasījuma sintaksi. DELETE tb1, tb2 FROM `tb1`, `tb2` WHERE tb1.id=$ids AND tb2.tb1_id=tb1.id Runājot par failu dzēšanu - šādos gadījumos var izmantot @ operatoru un file_exists() ir zināmā mērā lieks. Protams, var veikt pārbaudi, bet ja tev to failu nevajag, tad īstenībā arī nav jēgas pārbaudīt vai viņš eksistē. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.