Jump to content
php.lv forumi
Sign in to follow this  
nemakuphp

SQL kverijs

Recommended Posts

Vispārīgā tabulas struktūra ir apmēram šāda:

 

id | name | statuss

 

Kā veidot kveriju, lai izvadītu, pieņemsim, 10 ierakstus (labi, tas būtu viegli, LIMIT 10), bet ja ieraksti, kam statuss = 0 ir vairāk kā 10, tad izvelk tos visus, kuriem statuss ir 0?

Share this post


Link to post
Share on other sites

Tu tēmu izlasīji līdz galam?

 

ja ieraksti, kam statuss = 0 ir vairāk kā 10, tad izvelk tos visus, kuriem statuss ir 0

 

Vispārīgā gadījumā tas būtu

 

SELECT * FROM table ORDER BY id DESC LIMIT 10

 

bet nav zināms, vai ieraksti ar statuss 0 būs vairāk kā 10, jo ja ieraksti ar statuss = 0 ir mazāk kā 10, tad var izvadīt arī ierakstus, kuriem statuss = 1

Edited by nemakuphp

Share this post


Link to post
Share on other sites

ja ieraksti ar stuss 0 ir mazāk kā 10, tad atlikušie jāizvada ar stuss 1 ?

 

p.s. es laikam lasīt nemāku vai kaut kā tā...kaut ko es nesaprotu..

Edited by labaiss

Share this post


Link to post
Share on other sites

Izklausās ka visa šitā pasākuma loģika ir stipti .. emm .. nepareiza.

 

Liekas labakais ko tu šitādā gadījumā vari izdarīt ir uzstaisīt SQL procedūru,

kas šito norealizē.

 

Bet man tomēr interesē: " Kāpēc tev vajag šitād dīvainu rezultātu no SQL ? "

Edited by wintermute

Share this post


Link to post
Share on other sites

Un kas tur būtu tik dīvains?

 

Izvilkt vai nu pēdējos 10 ar jebkādu statusu, vai visus ar statusu 0, ja tādi ir vairāk kā 10

 

EDIT: Protams, ja jums tas liekas par sarežģītu, varēšu arī iztikt, izdomāšu kaut ko citu.

Edited by nemakuphp

Share this post


Link to post
Share on other sites

Ar mysql_num_rows() pačeko cik rindām tev statuss ir 0 un ja to skaits > 10, tad izvelc tās visas. Kas tur sarežģīts?

Share this post


Link to post
Share on other sites

Risinājums caur pakaļu. :D

 

SELECT * FROM tabula WHERE statuss=0 and (SELECT COUNT(*) FROM tabula where statuss=0)>10
UNION ALL
SELECT * FROM tabula WHERE (SELECT COUNT(*) FROM tabula where statuss=0)<=10 ORDER BY id DESC LIMIT 10

Share this post


Link to post
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...
Sign in to follow this  

×
×
  • Create New...