webForumDet fria alternativet

2 stycken order by?

ASPur ASP

6 svar · 608 visningar · startad av leniz

lenizMedlem sedan aug. 2001676 inlägg
#1

Hej!

Går det på något vis att ha en rätt komplicerad sql sträng där man plockar in och joinar olika tabeller och ställer lite olika villkor som ska uppfyllas och sedan göra så att resultatet visas i en ordning där de 2 träffar som visas högst upp är framslumpade (eller visas i en av mig angiven sorteringsordning) och att resterande sedan visas i den vanliga sorteringsordningen jag brukar använda mig av? Eller måste jag isf dela upp det i 2 separata frågor där jag i den första plockar fram 2 stycken och sen köra en till likadan men med annan order by och ingen limit?

Någon som förstår vad jag försöker beskriva? :OO

Mvh Lena

LarsGMedlem sedan dec. 200012 464 inlägg
#2

Jo, det går. Om du, t.ex. vill att alla stugor med gula tapeter skall komma först och att bland de med gula tapeter så skall de med 3 rum komma sist

order by case when wallpaper_colour = 'gul' then 0   else 1 end, 
     case when rooms = 3 then 1 else 0 end

Ovanstående fungerar i de flesta DBMS utom access.

lenizMedlem sedan aug. 2001676 inlägg
#3

Hej!
Hm, kan jag på något sätt begränsa antalet med 3 rum till t.ex. 2 stycken?
I ditt exempel att visa alla med gula tapeter och visa då först 2 stycken som har 3 rum och därefter resten sorterade i en annan ordning?
Mvh Lena

lenizMedlem sedan aug. 2001676 inlägg
#4

Kanske blir enklare om jag förklarar syftet med det hela. Det är att alla vill ju visas högst upp i listan = mest publicitet. Om jag då t.ex. slumpar fram 2 annonser bland de som har rätt sökkriterier och visar dem först, och därefter övriga poster. Då blir ju de mest åtråvärda platserna rättvist fördelade.

LarsGMedlem sedan dec. 200012 464 inlägg
#5

Det där ser jag ingen möjlighet att lösa med en sql-fråga. Det blir lättare om alla skall vara slumpmässigt ordnade.

aasahMedlem sedan mars 20034 471 inlägg
#6

leniz skrev:

Kanske blir enklare om jag förklarar syftet med det hela. Det är att alla vill ju visas högst upp i listan = mest publicitet. Om jag då t.ex. slumpar fram 2 annonser bland de som har rätt sökkriterier och visar dem först, och därefter övriga poster. Då blir ju de mest åtråvärda platserna rättvist fördelade.

Du kan ju alltid köra två frågor. Först en där du slumpar ut två, därefter en ny fråga där du tar ut alla i någon viss ordning. När du skriver ut den nedre listan har du en koll som gör att de två som fick plats 1 och 2 inte kommer ut igen.

voigtann1Medlem sedan juni 20019 519 inlägg
#7

Du kan plocka ut alla poster med GetRows, göra en funktion som plockar ut x antal positioner ifrån din Array av data från GetRows och loopar ut innehållet och om du får träffar på dom "speciella posterna" så placera du dom i en egen variabel och listar ut dom före dina andra träffar. Du får bara en databas koppling. Lite mer ASP kod men det borde fungera.

126 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)