webForumDet fria alternativet

COUNT ... vaddå??

16 svar · 806 visningar · startad av Eclipse

EclipseMedlem sedan juli 20003 825 inlägg
#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") = ""
voigtann1Medlem 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") = ""
EclipseMedlem 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...!?

voigtann1Medlem 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?

EclipseMedlem 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?

Peter SMedlem 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
EclipseMedlem 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.
voigtann1Medlem sedan juni 20019 519 inlägg
#8

Where u.strNickname != ''

?

@ndersMedlem sedan juni 200032 969 inlägg
#9

Where skall vara före group by.

aasahMedlem sedan mars 20034 471 inlägg
#10

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

voigtann1Medlem sedan juni 20019 519 inlägg
#11

Tror det är mer i det @nders skriver.

aasahMedlem 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

voigtann1Medlem sedan juni 20019 519 inlägg
#13

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

EclipseMedlem 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...!?

EclipseMedlem 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.

voigtann1Medlem sedan juni 20019 519 inlägg
#16

Då vet man ;)

aasahMedlem 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.

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