Alias fungerar inte i WHERE-delen. I ORDER BY, däremot, fungerar det bra :)
I stället får du skriva så här:
where dt.list0 + dt.list1 + ... + dt.list[i]N[/i] > 0
Databaser & SQLur Databashanterare & SQL
6 svar · 464 visningar · startad av backer
Hallojse,
tillbaka för lite vägledning.
Fick tipset att ifall ett värde returnerar NULL så kan man använda coalesce för att typa andra värden som skall användas. t.ex.
coalesce(list0,0)
Detta är ju super. Men jag försöker nu ta bort resultat ifall ett värde inte existerar. Det funkar toppen ifall jag väljer någon av list variablerna t.ex. WHERE list0 > 0 i slutet men ifall jag använder totalScore så funkar det inte alls, WHY? :q
Såhär ser frågan ut.
SELECT playerId, scoreName, scoreDate, list0, list1, list2, list3, list4, list0 +list1 +list2 +list3 +list4 AS totalScore
FROM (SELECT h1.playerId,
h1.scoreName,
h1.scoreDate,
(SELECT MIN(scoreTime)
FROM tbl_highscores
WHERE scoreListId = 0
AND playerId = h1.playerId
AND projectId = 1) AS list0 ,
(SELECT MIN(scoreTime)
FROM tbl_highscores
WHERE scoreListId = 1
AND playerId = h1.playerId
AND projectId = 1) AS list1 ,
(SELECT MIN(scoreTime)
FROM tbl_highscores
WHERE scoreListId = 2
AND playerId = h1.playerId
AND projectId = 1) AS list2 ,
(SELECT MIN(scoreTime)
FROM tbl_highscores
WHERE scoreListId = 3
AND playerId = h1.playerId
AND projectId = 1) AS list3 ,
(SELECT MIN(scoreTime)
FROM tbl_highscores
WHERE scoreListId = 4
AND playerId = h1.playerId
AND projectId = 1) AS list4
FROM tbl_highscores h1
GROUP BY h1.playerId
ORDER BY scoreDate ASC) dt
WHERE totalScore > 0 [B]<---- HÄR BLIR DET FEL!!![/B]
ORDER BY totalScore ASC
LIMIT 0,10;
Alias fungerar inte i WHERE-delen. I ORDER BY, däremot, fungerar det bra :)
I stället får du skriva så här:
where dt.list0 + dt.list1 + ... + dt.list[i]N[/i] > 0
va knasigt =) men då tutar jag på det.
Antar här alltså om t.ex. dt.list1 är NULL så kommer posten inte med i listan? Då är det toppen.
Om list1 är NULL kommer inte summeringen att fungera, så vill du vara säker på att kunna använda alla list-kolumner i WHERE-villkoret kan du säga COALESCE(list1, 0) o.s.v.
jo, men jag vill att om list1 är NULL så vill jag inte ha med själva posten alls.
Funkar ju fint när jag kör 1 lista. men hur blir det när man slår ihop alla.
Jag kanske är otroligt seg just nu, men vill du ta bort t.ex. list1 från SELECT- eller WHERE-delen om värdet är NULL?
Hur som helst så kan ju inte konstrukionen coalesce(listN, 0) bli fel eftersom A + 0 = A.
Sorry, jag som testade fel förut,
ifall A + 0 = A så blir ju
A + B + C = plus ifall någon har värde
Men när jag testade
where dt.list0 + dt.list1 + ... + dt.listN > 0
Så blir någon NULL och då dyker den inte upp listan.
GRYM som alltid Peter. tack