Jump to content
php.lv forumi

Recommended Posts

Posted (edited)

ideja ir tāda, ka vajadzētu izveidot vaicājumu (visu vienā vaicājumā), bet nav pagaidām ne jausmas kā to izdarīt. Tātad ir tabula (id, title, number, statuss). Vajadzētu atlasīt no sākuma visus ierakstus, kur number=4 un pēc tam lai visi pārējie tabulas ieraksti (izņemot jau iepriekš atlasītos). Ir idejas?

Edited by ray
Posted

easy:

SELECT *, IF(number = 4, 1, 2) AS kaartiiba FROM tabule ORDER BY kaartiiba

tik performance gan var gadīties nebūs labāka par diviem atsevišķiem kverijiem.

 

otrs variants ir:

(SELECT 1 AS kaartiba, * FROM tabule WHERE number = 4) UNION (SELECT 2, * FROM tabule WHERE number != 4) ORDER BY kaartiiba

Posted (edited)

Gadījumā, ja number kolona drīkst būt NULL, tad abi vaicājumi nav ekvivalenti ;)

 

Jebkurā gadījumā, man jau liekas, ka skanēt vienreiz tabulu un sakārtot pēc kaut kādas izrēķinātas izteiksmes ir ātrak nekā skanēt 2reiz un arī tomēr veikt kārtošanu. Bet nu protams, ka tikai tests dotu mums precīzu atbildi un iespējams tā rezultāts būtu atkarīgs no datu sadalījuma :)

 

Ak un vēl UNION vietā tomēr derētu UNION ALL, lai pilnīgi atšķirīgu kopu gadījumā neveiktu kaut kādu unikālo ierakstu meklēšanu.

 

Gints Plivna

http://datubazes.wordpress.com

Edited by Gints Plivna
×
×
  • Create New...