jag ska alltså få ut en tabell som innehåller alla poster som finns i första hämtningen av data, samt dess poäng som jag får ut med count(*)
Gren (ifrån första tabellen) | Poäng (ifrån länktabellen)
Nästa post ifrån första tabellen osv osv.
4 svar · 200 visningar · startad av erka
Hej!
Jag har ett litet problem som någon kanske kunde ge mig några bra råd om.
Detta är scenariet
Jag ska hämta 16 poäng poster från en databas, varje post har ett unikt id.
Tabellen LL_grenar
-Pk_grenId (räknare, primärnyckel)
-Grennamn (varchar)
Jag ska sedan loopa igenom denna eller binda den till en kontroll, men på varje position i loopen måste jag ställa en ny fråga mot databasen för att hämta ut antalet poäng i den grenen man är på (i loopen).
jag hämtar ut informationen på varje post i loopen genom att göra en count mot en länktabell, sqlfrågan ser ut så här
SELECT COUNT(*) AS PointScore FROM dbo.LL_pointCategorysUsersLink (Fk_PointCategoryId = "& VÄRDEFRÅNLOOPEN &")
I klassisk asp kunde man ju köra ett till recordset innuti loopen men hur gör man på ett smidigt sätt med asp.net. Jag tänkte först köra en datareader som man kör en while loop på i denna skapa en ny datareader som hämtar ut värdet för positionen i loopen och sedan stänga den. Men som jag har fattat det kan man bara ha en datareader.
Någon kan kanske ge mig lite klarhet.
Tacksam
jag ska alltså få ut en tabell som innehåller alla poster som finns i första hämtningen av data, samt dess poäng som jag får ut med count(*)
Gren (ifrån första tabellen) | Poäng (ifrån länktabellen)
Nästa post ifrån första tabellen osv osv.
Om du använder en datagrid/list/repeater så finns det event som heter ItemDataBound. Detta event körs för varje rad (item) som binds till din kontroll. Där borde du kunna lägga din logik och ställa ytterligare sql-satser.
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
// kod för varje item här...
}
Blir en massa frågor mot dbn dock... du borde kunna få ut allt i en enda fråga mot din db om jag inte missuppfattat dig. Fråga på sql-forumet!
Tack Network,
Nej jag kan inte få ut det med en enda fråga eftersom jag måste göra en count på varje post i loopen.
Men går det inte att lösa med en select i en select på något mystiskt sätt? Alternativt att du använder två tabeller som du joinar ihop istället... det känns inte rätt att en så pass enkel grej ska behöva en sql-loop. LarsG kan säkeret fixa det där. :)