webForumDet fria alternativet

sql-satsen till mysql

11 svar · 319 visningar · startad av ampy

ampyMedlem sedan feb. 20011 512 inlägg
#1

Denna sql-sats är anpassad till en access-databas, men hur ska den vara till en mysql-databas?

Set oRS = Connect.Execute("select count(*) as antal from (select distinct krypingastnamn from statistik where sort = 'krypin' AND krypinagare = '"&medlem&"') ")

Felmeddelande:

Microsoft OLE DB Provider for ODBC Drivers error '80040e09'

[TCX][MyODBC]You have an error in your SQL syntax near 'select distinct krypingastnamn from statistik where sort = 'krypin' AND krypinag' at line 1

LAMPMedlem sedan mars 2002729 inlägg
#2

Du får dela upp det i flera frågor. Mysql har ej stöd för subselectar och derived tables, med undantag för de absolut senaste beta versionerna om jag inte minns fel. :)

ampyMedlem sedan feb. 20011 512 inlägg
#3

Hur delar jag upp den i flera olika frågor då?

@ndersMedlem sedan juni 200026 914 inlägg
#4

Har inte MySQL stöd för SELECT COUNT (DISTINCT...) ?

Testa:

Set oRS = Connect.Execute("select count(distinct krypingastnamn) as antal from statistik where sort = 'krypin' AND krypinagare = '"&medlem&"'")

Mvh,

ampyMedlem sedan feb. 20011 512 inlägg
#5

Tack så mycket @nders, den koden fungerade.

Men här har jag en annan kod som också är anpassad till en access-databas som jag vill ska fungera till en mysql-databas nu.

	query = "select count(*) as antal, krypingastnamn from statistik where krypinagare = '"&medlem&"' AND sort = 'krypin' group by krypingastnamn order by 1 desc"

	set rs = connect.execute(query)
	c = 0
	if  not rs.eof then
   	response.write ""
  	 
        krypinnamn = rs("krypingastnamn")
	antal = rs("antal")
       
	end if

Jag får inget felmeddelande men variablerna sätts inte ut, varför?

LAMPMedlem sedan mars 2002729 inlägg
#6

Ursprungligen av @nders Har inte MySQL stöd för SELECT COUNT (DISTINCT...) ?

Testa:

Set oRS = Connect.Execute("select count(distinct krypingastnamn) as antal from statistik where sort = 'krypin' AND krypinagare = '"&medlem&"'")

Mvh,

Jo, men inte på det sättet ampy skrivit på ;)

LarsGMedlem sedan dec. 200012 465 inlägg
#7

Lägg till

option=16384

när du öppnar ansluningen.

LAMPMedlem sedan mars 2002729 inlägg
#8

Misstänker att frågan kommer, så detta är i förebyggande syfte ;)

Option specificerar med en Integer hur MyODBC ska arbeta. Och konstanten 16384 ändrar datatypen på LONGLONG kolumner till Int kolumner.

ampyMedlem sedan feb. 20011 512 inlägg
#9

Alltså min första fråga är löst men sen postade jag en ny kod i samma tråd eftersom det känns ondöigt att skapa en ny. Hur ska man skriva den andra koden med query till mysql-databasen?

LarsGMedlem sedan dec. 200012 465 inlägg
#10

Din andra fråga skall fungera i Mysql som den är.

ampyMedlem sedan feb. 20011 512 inlägg
#11

Men om jag skriver tex så här:

	query = "select count(*) as antal, krypingastnamn from statistik where krypinagare = '"&medlem&"' AND sort = 'krypin' group by krypingastnamn order by 1 desc"

	set rs = connect.execute(query)
	c = 0
	if  not rs.eof then
   	response.write "test"
  	 
        krypinnamn = rs("krypingastnamn")
	antal = rs("antal")
       
	end if

Så skrivs inte test ut men den gör det när jag avänder en access-databas.

LarsGMedlem sedan dec. 200012 465 inlägg
#12

Har du med option = 16384 när du öppnar din anslutning?

365 ms totalt · 5 externa anrop · cache AV · v20260730165559-full.0b955084
0 ms — hämta statistik (cache)
118 ms — slå upp tråd (db)
0 ms — hämta forumlista (cache)
122 ms — hämta inlägg (db)
122 ms — hämta bilagor (db)