Vraag : Het aanpassen van een bestaande vraag om tellingen te omvatten & maxrows

Hallo hebben de Mensen,

I een bestaande vraag, ik eerder hulp hier samenbrengend waarop had ( http://www.experts-exchan ge.com/Web _Development/Web_Languages-Standards/Cold_Fusion_Markup_Language/Q_26424862.html).  Dit grote vraagwerk en staat me toe om zowel het primaire resultaat (de „status“) en het secundaire resultaat (de „commentaren“) met enkel één vraag te krijgen.  Ik heb door outputcode omvat zodat kunt u zien hoe het used.

I am nu kijkend heeft om dit verder te nemen een stap met 2 toevoegingen;

Firstly, wil ik het aantal teruggekeerde maxrows beperken - maar van toepassing zijnd dat aan primair slechts (de „status“).  Als ik eenvoudig maxrows aan de vraag toevoeg, omvat het commentaren binnen dat (zo, als ik maxrows= " 10“ zette en de eerste status 9 commentaren heeft, word ik slechts één status (plus de 9 die commentaren), eerder dan 10 status is teruggekeerd en hun comments.

Secondly, zou ik een „telling“ voor het aantal commentaren voor elke status willen toevoegen.  Ik heb een paar opties hier, zoals het gebruiken van een cfset om tijdens de lijn overwogen toe te voegen, maar overtuigd ben ik niet die beste route.

Perhaps ben vraag ik teveel elk van deze binnen één enkele vraag doen kunnen?
" codeBody "
1:
2:
3:
4:
5:
6:
7:
8:

SELECTEER s.sID, s.wUserID, s.sStatus, s.sCreatedDate, u.FirstName, u.Surname, c.cComment, c.wUserID, c.cDate, cu.FirstName ALS cFirstName, Cu. Achternaam ALS cSurname
VAN statusupdates s
De LINKERZIJDE SLUIT zich aan gebruikers bij u OP s.wUserID=u.wUserID
De LINKERZIJDE SLUIT zich aan bij commentaren c OP c.inreplyto = s.sID
De LINKERZIJDE SLUIT zich aan gebruikers bij Cu OP c.wUserID=cu.wUserID
ORDE DOOR s.sCreatedDate DESC, s.sID

" codeBody "
1:
2:
3:
4:
5:
6:
7:
8:
9:

#FirstName# #Surname# #sStatus#
   
   
     
   #cFirstname# #cSurname# #cComment#
   
   

Antwoord : Het aanpassen van een bestaande vraag om tellingen te omvatten & maxrows

>>. Ten eerste, wil ik het aantal teruggekeerde maxrows beperken

Ideaal gezien is dat iets die op het db niveau zou moeten worden gedaan.  Het kon ook in de code van het CF worden gedaan. Maar er is geen punt oplopend de overheadkosten van het terugtrekken van gegevens die niet zullen gebruikt worden.  

U kon een afgeleide lijst waarschijnlijk gebruiken om de resultaten in SQL te beperken. Met andere woorden, selecteer de HOOGSTE 10 updates eerst, dan TREED aan de andere lijsten toe.  De nauwkeurige syntaxis en de structuur zijn afhankelijk gegevensbestand.  Het gebruiksBOVENKANT van lidstaten SQL, MySQL gebruiksGRENS, enz.….  

Ook, impliceert om het even welke „bovenkant x“ verslagenscenario het opdracht geven van de tot verslagen door „één of andere kolom“.   Ik veronderstellend u ben behoefte de recentste 10 updates…?  Sommige gegevensbestanden beperken welke handelingen u in een afgeleide lijst kunt uitvoeren. Zo is het zeer waarschijnlijk uw daadwerkelijke sql zal vereisen het knijpen…


SELECTEER s.sID, s.wUserID, s.sStatus ..... Andere Kolommen…
VAN    
              (
                    SELECTEER BOVENKANT 10 sID, wUserID, sStatus, ...... OtherColumns….
                    VAN statusupdates
                    ORDE DOOR sCreatedDate DESC
             ) s
             De LINKERZIJDE SLUIT zich aan gebruikers bij u OP s.wUserID=u.wUserID
             De LINKERZIJDE SLUIT zich aan bij commentaren c OP c.inreplyto = s.sID
             De LINKERZIJDE SLUIT zich aan gebruikers bij Cu OP c.wUserID=cu.wUserID
ORDE DOOR s.sCreatedDate DESC, s.sID

>> Ten tweede, zou ik een „telling“ voor het aantal commentaren voor elke status willen toevoegen.  

Wilt u de telling vóór OF na de commentaren tonen.  Als u het na de commentaren wilt tonen, dan is gebruiken van een cfset binnen de lijn fijn. Als u het moet tonen _before_ de commentaren, dan duidelijk zult u de totalen voor tijd moeten kennen.
Andere oplossingen  
 
programming4us programming4us