webForumDet fria alternativet

Får syntaxfel, men kan inte se felet.

Databaser & SQL

10 svar · 602 visningar · startad av saturday

Medlem sedan jan. 2007133 inlägg
Frågan#1

Hej,

Jag försöker prata med en MySql databas. Men den vill inte förstå mig.

Jag säger så här:
sqlStr = "SELECT TOP 3000 * FROM visitorFacts ORDER BY Id DESC"
Set conn = Server.CreateObject("ADODB.Connection")
conn.open "DSN=minDsn"
Set RS = conn.Execute(sqlStr)

Och då svarar den:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[MySQL][ODBC 3.51 Driver][mysqld-3.23.49]You have an error in your SQL syntax near '2000 id FROM visitorFacts' at line 1

Denna fråga fungerade jättebra när jag pratatde med Access senast, men MySql tycker inte om den.

Har prövat också med "SELECT TOP 3000 id FROM visitorFacts" för att pröva den enklaste möjliga frågan men får samma fel.

Kan någon se det jag inte ser? :P

Medlem sedan juni 20014 421 inlägg
#2
SELECT * FROM visitorFacts ORDER BY Id DESC LIMIT 3000
Medlem sedan dec. 20014 239 inlägg
#3

colione skrev:

SELECT * FROM visitorFacts ORDER BY Id DESC LIMIT 3000

Som colinone skriver och lite skillnader
TOP = Access, SQL
LIMIT = MySQL

Medlem sedan jan. 2007133 inlägg
#4

Tack!

Men så finner jag snabbt nästa problem...

select lang, (select count(*) from visitorFacts) as totalVisitor, count(*) as number from visitorFacts group by lang order by number desc

ger mig också syntaxfel. Får spasmer över att SQL-frågor inte fungerar cross database...

Medlem sedan jan. 2007133 inlägg
#5

Skrev om frågan så att den är mer lättöverskådlig:

SELECT lang, (SELECT COUNT(*) FROM visitorFacts) AS totalVisitor, COUNT(*) AS totalLang FROM visitorFacts GROUP BY lang ORDER BY totalLang DESC

Men fortfarande samma fel förstås.

Medlem sedan dec. 200012 464 inlägg
#6

[mysqld-3.23.49]

Varför denna gamla version? Den har inte stöd för subselect, derived tables, union, etc

Medlem sedan jan. 2007133 inlägg
#7

LarsG skrev:

[mysqld-3.23.49]

Varför denna gamla version? Den har inte stöd för subselect, derived tables, union, etc

Va? Ursäkta, är inte superhaj på SQL, där av frågar jag om hjälp här. Tog mig alldeles för lång tid från början att knåpa ihop frågan som den ser ut redan. Den fungerar i SQL Server men inte i MySql.

Du får mer än gärna ge mig en nyare version i förslag.

Medlem sedan dec. 200012 464 inlägg
#8
SELECT lang, (SELECT COUNT(*) FROM visitorFacts)

(select count(*) ...) är ett exempel på subselect. Om du använder version 3 av Mysql så går det inte att skriva den typen av frågor. Använd version 5.0 eller 4.1 åtminstone.

Medlem sedan jan. 2007133 inlägg
#9

Ok, hmm. Du har så rätt, databasen är MySQL 3.23.49.

Har någon en vettig fråga anpassad för tidigare version eller en referens som kan hjälpa mig?

Medlem sedan juni 20014 421 inlägg
#10

Du får dela upp frågan i två, alternativt uppgradera.

Alltså, ställ två frågor istället för en med subselect.

Medlem sedan jan. 2007133 inlägg
#11

Kan inte uppgradera tyvärr, så jag får dela upp frågan. Tack.

383 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
245 ms — ändringar (db)