webForumDet fria alternativet

SQL fråga, Access + ASP

Databaser & SQL

3 svar · 543 visningar · startad av civilpolisen

Medlem sedan dec. 2009872 inlägg
Frågan#1
Problemet är DENNA raden:
SQL = "SELECT r.intID, r.strName, r.strName2, r.strPathName, r.strFileName" _
	& ", ( SELECT COUNT(*) FROM [users] u WHERE u.intRegionID = r.intID ) " _
	[b]& ", ( SELECT COUNT(*) FROM [article] a, [users] u WHERE a.intUserID = u.intID AND u.intRegionID = r.intID ) " _[/b]
	& " FROM [region] r WHERE r.bolView = TRUE ORDER BY r.strName;"

Detta fungerade bra ett antal dagar... men sen kom felmeddelande, "Invalid operation", och det gick att lösa med... :
SQL = "SELECT r.intID, r.strName, r.strName2, r.strPathName, r.strFileName" _
	& ", ( SELECT COUNT(*) FROM [users] u WHERE u.intRegionID = r.intID ) " _
	& ", ( SELECT COUNT(*) FROM [article] a, [users] u, [b][region] r[/b] WHERE a.intUserID = u.intID AND u.intRegionID = r.intID ) " _
	& " FROM [region] r WHERE r.bolView = TRUE ORDER BY r.strName;"

Då fungerade koden i sig, men då blev uträkningen fel...
Nu står det lite still i min hjärna och jag har prövat olika varianter av detta...

[users]
intID
intRegionID

[article]
intID
intUserID

[region]
intID

Jag vill alltså räkna antalet artiklar skrivna i varje region. (Då får man kolla vilka
som bor i den regionen...)
Man kan säkert göra så här, men jag skulle vilja göra rätt!! :-)
Är jag tydlig nog, eller ska jag utveckla mig ännu mer??

Medlem sedan aug. 20039 340 inlägg
#2

Lägg GROUP BY u.intID precis innan ORDER BY

Dessutom skulle din fråga vara snyggare om den skrevs med en join istället för en from med två tabellnamn. Och som frågan ser ut nu får du inte ut användare med 0 skrivna artiklar, detta kan du lösa med en left join.

Edit: Feltänk, låt mig återkomma.

Medlem sedan dec. 2009872 inlägg
#3

Ja... jag tror du läser lite fort, eller jag som uttrycker mig dåligt.

Jag vill gärna få 0 (noll) antalet skrivna artiklar från varje region... (det är län som avses, om det skulle underlätta...)

Det är typ liknande webbtidning och olika folk bor i olika delar av landet... och skriver olika texter.... (motsvarande)

Som det är nu är det 1 text i varje region, i varje län, och det är fel...

***
redigera:

Eller också bara skiter vi i den frågan... det löser det hela...!! :-)

Medlem sedan dec. 200012 464 inlägg
#4
select r.intID, 
       r.strName, 
       r.strName2, 
       r.strPathName, 
       r.strFileName,
       count(u.intRegionId),
       (select count(*) 
          from article
         where intUserID = u.intid)
  from region r
  left join users u
    on u.intRegionID = r.intID
 where r.bolView = true
 group by r.intID, 
       r.strName, 
       r.strName2, 
       r.strPathName, 
       r.strFileName
 order by r.strName
255 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)