webForumDet fria alternativet

Hämta mellan två datum

Databaser & SQL

5 svar · 466 visningar · startad av Pedda

Medlem sedan juni 20006 031 inlägg
Frågan#1

Felmeddelande:

Operand should contain 1 column(s)

Min select:

"SELECT *, 
    (SELECT namn
        FROM ".$prefix."sorter s
        WHERE s.sortId = i.ref_sortId)
   	FROM ".$prefix."indata i
		WHERE startdatum BETWEEN '2007-04-01' AND '2007-04-30'
 		ORDER BY startdatum";

Vad gör jag för fel?
Fälten är datetime och det är MySQL 5

/red
Hittade ett slarvfel, så jag har uppdaterat felmeddelandet

Medlem sedan juni 20006 031 inlägg
#2

*BUMP*

Verkar vara en bugg i MySQL som ställer till det.
Men hur jag än försöker bygga om min select så får jag samma fel.

http://bugs.mysql.com/bug.php?id=8020

Medlem sedan juni 20006 031 inlägg
#3

Har lyckats få till det så jag får ut rätt data från tabellen indata men jag får inte något värde på namn i tabellen sort.
Ska jag inte kunna få ut det också?

Medlem sedan juni 200032 967 inlägg
#4
...
   (SELECT namn
        FROM ".$prefix."sorter s
        WHERE s.sortId = i.ref_sortId) [b]as foo[/b]
...

mvh

Medlem sedan juni 200032 967 inlägg
#5

Hur blev det slutgiltiga fungerande resultatet? :)

Medlem sedan juni 20006 031 inlägg
#6
"SELECT <kol1>, <kol2>, <osv>, 
    (SELECT namn
        FROM ".$prefix."sorter s
        WHERE s.sortId = i.ref_sortId) AS sortNamn
   	FROM ".$prefix."indata i
		WHERE startdatum BETWEEN '2007-04-01' AND '2007-04-30'
 		ORDER BY startdatum";

Man kunde inte ha * i första selecten pga en bugg som gör att raderna räknas fel.
Ett tag försökte jag hämta två fält i andra selecten och det gick ju givetvis inte.
Koden ovan funkar iaf. :)

247 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)