Milos911 Serbia
Član broj: 219127 Poruke: 1230 77.243.16.*
|
INSERT INTO attachedPhotos (postID, lokacija, datum, title) VALUES ('1','ime_prve_slike.jpg','datum','title')
INSERT INTO attachedPhotos (postID, lokacija, datum, title) VALUES ('1','ime_druge_slike.jpg','datum','title')
SELECT * FROM attachedPhotos WHERE postID='1'
DELETE FROM attachedPhotos WHERE postID = '1' AND lokacija="ime_prve_slike.jpg"
Umesto:
INSERT INTO attachedPhotos (id, lokacija, datum, title) VALUES ('1','ime_prve_slike.jpg','datum','title')
//get last insert id
INSERT INTO photosRelations (id,postID,photoID) values ('1','1','1')
INSERT INTO attachedPhotos (id, lokacija, datum, title) VALUES ('2','ime_druge_slike.jpg','datum','title')
//get last insert id
INSERT INTO photosRelations (id,postID,photoID) values ('2','1','2')
SELECT * FROM photosRelations LEFT JOIN attachedPhotos on photosRelations.photoID = attachedPhotos.id WHERE photosRelations.postID='1'
DELETE FROM photosRelations WHERE photoID='1'
DELETE FROM attachedPhotos WHERE photoID='1'
:)
U prvom lepo stavi index na attachedPhotos.postID, i uziva :) Trosice manje memorije, i radice brze. Jedno ce brisanje biti malo sporije, jer ce morti da se radi pretraga "lokacija" polja, ali realno to je zanemarljivo jer ne brise slike tako cesto......
Inace, kad se vec raspisah (ovo je cisto licno razmisljanje), nemoj da upisujes lokaciju, vec samo ime slike. Posle si slobodan da prebaci slike negde drugo ako je potrebno, a da putanju menjas u aplikaciji (umesto da menjas sve redove u bazi)... I ako bi koristio originalni drugi primer, umesto da stavis da ti se id slike zove id, bolje stavi photoID (pa posle kad radis left join, ne pises blablabla ON blablabla nego USING (photoID).
|