webForumDet fria alternativet

COUNT ... vaddå??

Databaser & SQLur Databashanterare & SQL

16 svar · 806 visningar · startad av Eclipse

Medlem sedan juli 20003 825 inlägg
Frågan#1

Ingen av dessa varianter fungerar. Access + ASP

' ## COUNT MOST FAMOUS PHOTOGRAPHER
SQL = "SELECT TOP 10 u.intID, u.strNickname " _
	& ", (SELECT  [b]COUNT(tmpPhotos)[/b] FROM images i WHERE  i.intUserID = u.intID ) " _
	& " FROM users u, images i WHERE tmpPhotos > 0 ORDER BY tmpPhotos DESC;"
set mySQL = Conn.Execute(SQL)
IF NOT mySQL.EOF THEN application("listUsersTOP10") = mySQL.GetRows() ELSE application("listUsersTOP10") = ""

' ## COUNT MOST FAMOUS PHOTOGRAPHER
SQL = "SELECT TOP 10 u.intID, u.strNickname " _
	& ", (SELECT  [b]COUNT(*) AS tmpPhotos[/b]  FROM images i WHERE  i.intUserID = u.intID ) " _
	& " FROM users u, images i WHERE tmpPhotos > 0 ORDER BY tmpPhotos DESC;"
set mySQL = Conn.Execute(SQL)
IF NOT mySQL.EOF THEN application("listUsersTOP10") = mySQL.GetRows() ELSE application("listUsersTOP10") = ""
Medlem sedan juni 20019 519 inlägg
#2
' ## COUNT MOST FAMOUS PHOTOGRAPHER
SQL = "SELECT TOP 10 u.intID, u.strNickname " _
	& ", (SELECT  COUNT(*) FROM images i WHERE  i.intUserID = u.intID ) [b]AS tmpPhotos[/b] " _
	& " FROM users u, images i WHERE tmpPhotos > 0 ORDER BY tmpPhotos DESC;"
set mySQL = Conn.Execute(SQL)
IF NOT mySQL.EOF THEN application("listUsersTOP10") = mySQL.GetRows() ELSE application("listUsersTOP10") = ""
Medlem sedan juli 20003 825 inlägg
#3

Gött mos, broder!

Fungerar:
& " FROM users u, images i ;"

Fungerar EJ:

& " FROM users u, images i WHERE tmpPhotos <> 0;"

& " FROM users u, images i ORDER BY tmpPhotos DESC;"

Kan jag inte använda tmpPhotos senare i urvalet...!?

Medlem sedan juni 20019 519 inlägg
#4

Nej. Men det är nog inte omöjligt att RecordSet.Filter kanske kan hjälpa dig med Sortering eller liknande?

Medlem sedan juli 20003 825 inlägg
#5

Hmm... tragiskt. Tål att funderas på. Jag ska utveckla min tanke. Kanske bättre i ny tråd?

Medlem sedan dec. 20025 483 inlägg
#6
select top 10
       u.intId
     , u.strNickName
     , count(*)
  from users u
inner
  join images i
    on u.intId = i.intUserId
group
    by u.intId
     , u.strNickName
having count(*) > 0
order
    by 3 desc
Medlem sedan juli 20003 825 inlägg
#7

Tack!!

Detta fungerar bra:

SQL = "select top 10 u.intId, u.strNickName, count(*)" _
	& " from users u " _
	& " inner join images i on u.intId = i.intUserId " _
	& " group  by u.intId, u.strNickName having count(*) > 0 " _
	& " order by 3 desc ;"
set mySQL = Conn.Execute(SQL)

IF NOT mySQL.EOF THEN
	myRow = mySQL.GetRows()
	FOR j = 0 TO UBound(myRow,2)
	response.write j+1 & ". " & myRow(1,j) & " -- " & myRow(2,j) & "<br>"
	NEXT
END IF

Men hur frågar jag "WHERE u.strNickName <> '' " ???

SQL = "select top 10 u.intId, u.strNickName, count(*)" _
	& " from users u " _
	& " inner join images i on u.intId = i.intUserId " _
	& " group  by u.intId, u.strNickName having count(*) > 0 " _
	& " [b]WHERE u.strNickname <> ''[/b]  order by 3 desc ;" <--- FUNGERAR EJ. Har även prövat alternativ.
Medlem sedan juni 20019 519 inlägg
#8

Where u.strNickname != ''

?

Medlem sedan juni 200032 967 inlägg
#9

Where skall vara före group by.

Medlem sedan mars 20034 471 inlägg
#10

Borde det inte vara <> istället för != ? Eller funkar det senare i Access?

Medlem sedan juni 20019 519 inlägg
#11

Tror det är mer i det @nders skriver.

Medlem sedan mars 20034 471 inlägg
#12

voigtann1 skrev:

Tror det är mer i det @nders skriver.

Det @nders skriver är rätt. :) Det jag funderade på var om ditt råd var det? :q

Medlem sedan juni 20019 519 inlägg
#13

!= borde fungera... har faktist inte testat det i Access ;)

Medlem sedan juli 20003 825 inlägg
#14
SQL = "select top 10 u.intId, u.strNickName, count(*)" _
	& " from users u " _
	& " inner join images i on u.intId = i.intUserId " _
	& " WHERE u.strNickname <> '' group  by u.intId, u.strNickName having count(*) > 0 " _
	& " order by 3 desc ;"
set mySQL = Conn.Execute(SQL)

IF NOT mySQL.EOF THEN
	myRow = mySQL.GetRows()
	FOR j = 0 TO UBound(myRow,2)
	response.write j+1 & ". " & myRow(1,j) & " -- " & myRow(2,j) & "<br>"
	NEXT
END IF

Tack! Gütt mos.... Vem vill ha cred för detta...!?

Medlem sedan juli 20003 825 inlägg
#15

voigtann1 skrev:

!= borde fungera... har faktist inte testat det i Access ;)

Microsoft JET Database Engine error '80040e14'

Syntax error (missing operator) in query expression 'u.strNickname != '''.

/admin/login.asp, line 33

Kanske i senare/andra versioner men inte i den version jag har.

Medlem sedan juni 20019 519 inlägg
#16

Då vet man ;)

Medlem sedan mars 20034 471 inlägg
#17

Eclipse skrev:

Microsoft JET Database Engine error '80040e14'

Syntax error (missing operator) in query expression 'u.strNickname != '''.

/admin/login.asp, line 33

Kanske i senare/andra versioner men inte i den version jag har.

Jag tror att det är specifikt för MS SQL Server.

139 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)