Skall summera antalet kommentarer och skriva ut det värdet till varje post som hämtas med getrows. Kan man göra det direkt i frågan? DB är access. Frågan ser ut såhär:
Set RecSet = Connect.Execute("SELECT dagbok.*, dagkommentarer.* FROM (dagbok LEFT OUTER JOIN dagkommentarer ON dagbok.dagId = dagkommentarer.komOrigin) ORDER BY dagbok.dagId DESC")
"SELECT dagbok.*, (select count(*) from dagkommentarer ts where ts.komOrigin = dagbok.dagId) as antal_kommentarer
FROM dagbok
ORDER BY dagbok.dagId DESC"
Din sql-sats ser lite konstig ut. Du verkar hämta samtliga poster från dagbok samt en kommentar som tillhör denna dagbok. Rätt?
Annars är väl den enklaste lösningen att slänga in en sub-query liknande ovan.
Ok. Jag utgår från att strukturen inte är identisk mellan ett dagboksinlägg och kommentar iom två tabeller. Det gör att endast en fråga för all information är utesluten.
Min lösning skulle nog vara med två frågor.
Hämta dagboken:
"SELECT dagbok.*, (select count(*) from dagkommentarer ts where ts.komOrigin = dagbok.dagId) as antal_kommentarer
FROM dagbok ORDER BY dagbok.dagId DESC"
Hämta samtliga kommentarer:
select * from dagkommentarer order by komOrigin desc
Om du lägger in båda dessa i varsin array kan du för varje dagboksinlägg sedan stega 'antal_kommentarer'-steg i kommentarsarrayen för att skriva ut relevanta kommentarer. Det här kräver dock att samtliga kommentarer är aktiva/valida (matchas mot något dagboksinlägg som inte är satt osynligt eller likn). De ska däremot vara sorterade korrekt. Med extra kontroller att kommentaren verkligen är för aktuellt dagboksinlägg kan det fixas.
Psuedokod
arrGb = rs1.getrows() ' inlägg
arrCom = rs2.getrows() ' kommentarer
i = 0
for each line in arrGb
print gbContent
for c = i to i + antal_kommentarer
print arrCom[c]
i = i + antal kommentarer
Har anpasssat din kod en aning men vet inte om det är korrekt utfört av mig. Den stegar inte vidare på varje dagbokspost och den stegar ej heller vidare vid ny dagdokspost.
Jag är osäker på hur jag skall översätta denna rad:
Det är vanliga 2-dimensionella arrayer som getrows() returnerar. Nedan har du lite mer asp-kod som skall fungera. Du måste dock själv veta vilka fält som du returnerar för att veta vilket index de får i arrayen.
set rs = conn.execute("SELECT dagbok.*, (select count(*) from dagkommentarer ts where ts.komOrigin = dagbok.dagId) as antal_kommentarer
FROM dagbok ORDER BY dagbok.dagId DESC")
if not rs.eof then
arrGbok = rs.getrows()
end if
set rs = conn.execute(select * from dagkommentarer order by komOrigin desc)
if not rs.eof then
arrCom = rs.getrows()
end if
curComment = 0
for i = lbound(arrGbok, 2) to ubound(arrGbok, 2)
comments = arrGbok(0, i) ' 0 måset vara indexet för kolumnen som returnerar antal kommentarer
' Skriv ut inlägget här som exempel
response.write arrGbon(1, i) ' ex namn
response.write arrGbon(2, i) ' ex texten
' Gå igenom samtliga kommentarer
for c = curComment to curComment + comments - 1
response.write arrCom(1, c) ' ex namn
response.write arrCom(2, c) ' ex kommentaren
next
curComment = curComment + comments
next
Lite felhantering skulle inte skada btw. ;)
127 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe