Denna sql fungerar inte riktigt som jag hadde tänkt: Jag kan inte få till det så att det fungerar som jag vill. Kan det här vara till någon hjälp. Hej, Hej Håkan. Mmm... ser att det saknas ett kommatecken efter t_Forum_Kategori.beskrivning i SELECTen. HEj Håkan. Byt databas, till en "riktig"... ;-) Hej Hågan. Tja Access kostar väl pengar medan SQL Server 2008 Express är gratis. HGej Håkan. Tja är ju som sagt dålig på Access. Om du tittar lite högre upp så ser du att jag skrivit INNER JOIN, det är den jag menar. Ny version... Håkan. Det är lugnt. Hmm... Jag har inte kollat din frågeställning så noga men är inte det något liknande som jag svarade på i Håkan tack för att du försökte. Ok, funkar det om du gör så här. Jag har bara tagit med några fält från dina tabeller men principen är liknande den jag använde i mitt svar i den andra tråden. Det bör alltså se ut så här: Har inte hunnit kolla så noga men raden Problem med ännu en sql
<code>
SELECT
f.id AS forumId,
f.svarPa, f.hits,
t_Forum_Kategori.kategori,
f.katId,
t_Forum_Kategori.moderat,
f.nick,
f.datum,
f.orginal,
f.icon,
f.rubrik,
f.visit,
t_Forum_Kategori.beskrivning,
(SELECT COUNT(*) FROM
t_Forum
WHERE
t_Forum.svarPA= f.id) AS Antal
FROM
t_Forum_Kategori
LEFT JOIN
t_Forum AS f
ON
t_Forum_Kategori.id = f.katId
WHERE
(f.id In (
select top 5 id
from
t_forum
where
id = f.id
order by
datum desc )
AND
(f.orginal)=True)
ORDER BY
t_Forum_Kategori.kategori,f.id DESC
</code>
Min önskan var att visa alla forumskategorierna och de 5 senaste trådarna i
varje kategori. Detta fungerar tyvärr inte, den visar alla.
Hur bör jag ändra detta? Sv: Problem med ännu en sql
Om jag ändrar förutsättningarna, hur skulle sql:en se ut, om jag vill ha fram alla kategorier och alla inlägg som gjorts de senaste 30 dagarna?
Jag har försökt att labba med det, men jag får inte till det.Sv:Problem med ännu en sql
http://www.google.se/#hl=sv&source=hp&biw=1395&bih=866&q=SELECT+TOP+N+Rows+Per+category&aq=f&aqi=&aql=&oq=&gs_rfai=&fp=defa8e351d9b4134Sv:Problem med ännu en sql
Testa den här frågan (5 senaste trådarna), har inte Access så jag vet inte om syntaxen är rätt.
<code>
SELECT * FROM
(SELECT
f.id AS forumId,
f.svarPa,
f.hits,
t_Forum_Kategori.kategori,
f.katId,
t_Forum_Kategori.moderat,
f.nick,
f.datum,
f.orginal,
f.icon,
f.rubrik,
f.visit,
t_Forum_Kategori.beskrivning,
(SELECT COUNT(*) FROM t_Forum WHERE datum >= f.datum AND katId = f.katId) AS Ranking
FROM t_Forum_Kategori
LEFT JOIN t_Forum AS f ON t_Forum_Kategori.id = f.katId
WHERE f.orginal = True) AS a
WHERE a.Ranking <= 5
ORDER BY a.kategori, a.forumId DESC
</code>Sv: Problem med ännu en sql
Du har säkert någonting på g här, men jag får <b>syntaxfel i FROM-instruktion</b>.
Jag försöker att lokalisera felet men hitintills så har jag inte lyckats.Sv:Problem med ännu en sql
Det finns också med ett AND i "första" WHERE som inte ska vara där.
Har ändrat i koden ovan.Sv: Problem med ännu en sql
Detta är tydligen min tur i livet :-(.
ERROR:
<b>Frågan är för komplex</b>
Jag undrar kan man inte bryta ner denna sql till flera frågor i Access och komma förbi problemet?Sv:Problem med ännu en sql
Fungerar det om du tar bort den "yttre" frågan?
<code>
SELECT
f.id AS forumId,
f.svarPa,
f.hits,
t_Forum_Kategori.kategori,
f.katId,
t_Forum_Kategori.moderat,
f.nick,
f.datum,
f.orginal,
f.icon,
f.rubrik,
f.visit,
t_Forum_Kategori.beskrivning,
(SELECT COUNT(*) FROM t_Forum WHERE datum >= f.datum AND katId = f.katId) AS Ranking
FROM t_Forum_Kategori
LEFT JOIN t_Forum AS f ON t_Forum_Kategori.id = f.katId
WHERE f.orginal = True
</code>Sv: Problem med ännu en sql
Jo det fungerar. Men nu har du ju tagit bort möjligheten för top 5 i varje kategori..
<b> Byt databas, till en "riktig"... ;-) </b> kostnadskäl :-(Sv:Problem med ännu en sql
Plus att detta relativa enkla, blir så krångligt, men det kan ju bero på min okunskap om "verktyget".
Prova detta, skrivet ad hoc, så det kan behövas justeras.
<code>
SELECT
f.id AS forumId,
f.svarPa,
f.hits,
e.t_Forum_Kategori.kategori,
f.katId,
e.t_Forum_Kategori.moderat,
f.nick,
f.datum,
f.orginal,
f.icon,
f.rubrik,
f.visit,
e.t_Forum_Kategori.beskrivning
FROM t_Forum_Kategori AS e
INNER JOIN
(SELECT a.katId,
(SELECT COUNT(*) FROM t_Forum AS b
WHERE b.datum >= a.datum and b.katId = a.katId) AS ranking
FROM t_Forum AS a) AS c ON c.katid = f.katId AND c.ranking <= 5
LEFT JOIN t_Forum AS f ON e.t_Forum_Kategori.id = f.katId
WHERE f.orginal = True
</code>Sv: Problem med ännu en sql
<b>Tja Access kostar väl pengar medan SQL Server 2008 Express är gratis.</b> Nja det vet jag, men jag har min webbplats på Loopia och det är där som jag menar kostar pengar.
Jag är väldigt tacksam att du försöker hjälpa mig, men nu fick jag ett error:
<b>Syntaxfel i JOIN-operation</b>
Vad tror du?Sv:Problem med ännu en sql
Kan det vara INNER som är fel, kanske bara heter JOIN i Access?Sv:Problem med ännu en sql
Kanske att ordet INNER inte fungerar i Access, kanske bara ska stå JOIN.Sv:Problem med ännu en sql
<code>
SELECT
f.id AS forumId,
f.svarPa,
f.hits,
e.t_Forum_Kategori.kategori,
f.katId,
e.t_Forum_Kategori.moderat,
f.nick,
f.datum,
f.orginal,
f.icon,
f.rubrik,
f.visit,
e.t_Forum_Kategori.beskrivning
FROM t_Forum_Kategori AS e
JOIN
(SELECT a.katId,
(SELECT COUNT(*) FROM t_Forum AS b
WHERE b.datum >= a.datum and b.katId = a.katId) AS ranking
FROM t_Forum AS a) AS c ON c.katid = f.katId AND c.ranking <= 5
LEFT JOIN t_Forum AS f ON e.t_Forum_Kategori.id = f.katId
WHERE f.orginal = True
</code>Sv: Problem med ännu en sql
Nu tycker jag synd om dig, och jag förstår att du kämpar på för att lösa detta, men tyvärr fel igen <b>Syntaxfel i FROM-instruktionen</b>.
Är det här helt hopplöst?Sv:Problem med ännu en sql
Nu var det så att jag hann att ändra i senaste versionen.
Frågan är vilken du testade.
Prova gärna igen med den som syns nu.Sv:Problem med ännu en sql
Tyvärr så har jag mycket att göra nu, så jag hinner inte grotta ner mig i hur man skriver i Access, tyvärr.
Hoppas någon annan med Access och kunskaper, kan skriva om det så det fungerar.
I SQL Server hade detta inte varit något som helst problem att göra, men, men.
Lycka till, jag kikar in då och då för att se vad som händer.Sv:Problem med ännu en sql
tråden [Summering av urvalsfråga.], mitt svar var [Sv: Summering av urvalsfråga.].
Där gällde det istället för de fem senaste så ville man ha poster för respektive kategori inom ett datumintervall + alla kategorier även om de inte hade poster i datumintervallet.Sv: Problem med ännu en sql
Jan det här med datum är inte så viktigt, det jag ville ha är:
1) ta fram alla kategorier.
2) ta fram de 5 senaste inläggen i varje kategori.
3) räknar hur många hits(antal) som varje inlägg ar.
I princip så har jag löst allt detta, utom det här med de 5 senaste, det är där problemet är.
Jag tittade på din tidigare lösning, och jag måste säga att jag inte förstod den alls.Sv:Problem med ännu en sql
Skapa förs en fråga som returnerar Top 5 forumposter i respektive kategori.
qryForumTop5
<code>
SELECT DISTINCT *
FROM t_forum AS f
WHERE f.Id In (SELECT TOP 5 Id FROM t_forum WHERE KatId = f.KatId ORDER BY Datum DESC);
</code>
Skapa sen en fråga som returnerar alla kategorier samt Top 5 poster från qryForumTop5 där kategori-id matchar.
qryAllCategoriesAndTop5Posts
<code>
SELECT fk.ID, fk.Beskrivning, fk.Moderat, fk.Kategori, qryForumTop5.ID, qryForumTop5.KatId, qryForumTop5.Datum, qryForumTop5.Rubrik
FROM t_forum_kategori AS fk LEFT JOIN qryForumTop5 ON fk.Id = qryForumTop5.KatId
ORDER BY fk.Kategori;
</code>
Om du utgår ifrån detta så kan du säker fixa till det som du vill ha det.Sv: Problem med ännu en sql
<code>
//qryForumTop5
SELECT DISTINCT *
FROM t_forum AS f
WHERE (((f.Id) In
(SELECT TOP 5 Id FROM t_forum WHERE KatId = f.KatId AND f.orginal=TRUE ORDER BY KatId,Datum DESC)));
//jag måste sortera ut så att det är orginalposterna
//qryAllCategoriesAndTop5Posts
SELECT fk.ID, fk.Beskrivning, fk.Moderat, fk.Kategori, qryForumTop5.ID,
qryForumTop5.KatId, qryForumTop5.orginal,
qryForumTop5.Datum, qryForumTop5.senast, qryForumTop5.svarPa, qryForumTop5.icon, qryForumTop5.hits, qryForumTop5.visit,
qryForumTop5.Rubrik, qryForumTop5.inlagg,
(SELECT COUNT(*) FROM
t_Forum WHERE t_Forum.svarPA= f.id) AS Antal
FROM t_forum_kategori AS fk LEFT JOIN qryForumTop5 ON fk.Id = qryForumTop5.KatId
WHERE (((qryForumTop5.orginal)=True))
ORDER BY fk.Kategori;
//jag lade in cont för att få antalet svar
</code>
Ser detta rätt ut?
När jag tittar på forumet idag så är det relativt många inlägg, men nu blir det inte så många..Sv:Problem med ännu en sql
<code>
WHERE (((qryForumTop5.orginal)=True))
</code>
kan du väl ta bort, du har ju redan säkerställt att det enbart är originalposter i qryForumTop5.