Jump to content
php.lv forumi

Recommended Posts

Posted (edited)

Varbūt kāds db speciālists var palīdzēt opimizēt / izveidot šādu vaicājumu:

 

SELECT

*, id n_id,

(

SELECT

file

FROM

_pictures p

WHERE

p.parent_id = n_id

ORDER BY

p.id ASC

LIMIT 1

)

first ,

(

SELECT

file

FROM

_pictures p

WHERE

p.parent_id = n_id AND p.id = picture_id

ORDER BY

p.id ASC

LIMIT 1

)

picture

 

FROM _news WHERE active = 1 ORDER BY id DESC

 

tabulas:

 

[_news]

- id

- title

- text

- picture_id

- active

 

[_pictures]

-id

- file

- parent_id

 

Tas rezultāts, kas jāpanāk ir jāatlasa no bilžu tabulas izvēlētē jaunuma default bilde (picture_id) vai pirmā pēc secības, ja tajā tabulā tāda bilde nav vai picture_id = 0

 

Vaicājumi vienmēr bijusi man liela problēma, tāpēc varbūt kāda "gudrāka galva" var šajā lietā izlīdzēt

 

 

 

Edited by ray
Posted

Nenodarbojies ar muļķībām, bet nodrošini, ka `news` tabulā vienmēr ir pareizs `picture_id`, bet tas ir 0 vai kā citādi tukšs tikai tad, kad rakstam nevienas bildes nav. Tas būs krietni labāk par kaut kādu sviestainu kveriju.

Posted (edited)

Atvainojos, kļūda query. p.id = 1 nebija jābūt.

parent_id ir "_pictures" tabulā un norāda pie kuras ziņas bilde pieder.

 

Izlaboju pirmajā ierakstā "_pictures" tabulu un query

 

Kavacky:

diemžēl tā nevar izdarīt, jo lietotājam ir arī iespēja nenorādīt titulbildi (picture_id), tādā gadījumā jārādās pirmā bilde no galerijas (_pictures tabula)

Edited by ray
Posted

Nu to vienu subselektu var pārrakstīt par JOINu, ja visi primary key ir kārtībā.

SELECT
   *, id n_id,
   (
  	 SELECT file FROM _pictures p
  	 WHERE    
  		 p.parent_id = n_id
  	 ORDER BY
  		 p.id ASC LIMIT 1
   ) first,
   p.file AS picture
FROM
   _news
LEFT JOIN _pictures p ON p.id = picture_id
WHERE
   active = 1
ORDER BY
   id DESC

Posted

Kavacky:

diemžēl tā nevar izdarīt, jo lietotājam ir arī iespēja nenorādīt titulbildi (picture_id), tādā gadījumā jārādās pirmā bilde no galerijas (_pictures tabula)

Un kas īsti traucē, ja lietotājs ir norādījis nevienu bildi, tad atrast pirmo bildi galerijā un apdeitot `news`? Un, kad bildes pamaina, apdeitot atkal? Pie galerijas bildēm tad jānorāda, ka tas ir usera manuāli selektēts thumbnailis, lai nepārrakstītu kaut ko nepareizi, ja pamaina kādas bildes, bet ir jau manuāli uzstādītais thumbnailis.

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...
×
×
  • Create New...