Jump to content
php.lv forumi

Inner, join, unlink..


eregi
 Share

Recommended Posts

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 by eregi
Link to comment
Share on other sites

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ē.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...