![]() |
Har ett litet MySQL problem.
Jag behöver summan av ett fält i en tabell för att använda i mina WHERE kriteria, men jag är lite av en kratta på SQL och vet inte om det går och isåfall hur. Har testat följande: Kod:
SELECT DISTINCT hand.id Table 'handdata.forced' doesn't exist Det är egentligen en mycket längre fråga och använder jag inte alias i min subquery så relaterar inte resultatet till rätt "hand.id". Kör jag innan "FROM" så vet jag inte hur jag skall kunna använda värdet under "WHERE", t.ex.: Kod:
SELECT DISTINCT hand.id, SUM(forced.amount) AS forcedamount Någon som har en idé? |
HAVING är nog det du letar efter.
|
Supertack för det snabba och utmärkta svaret!!
Detta verkar fungera: Kod:
SELECT DISTINCT hand.id, SUM( forced.amount ), players.player_stack |
HAVING verkar ju vara rätt lösning, men jag får inte riktigt till det.
Denna frågan kör ok: Kod:
SELECT DISTINCT hand.id, SUM( forced.amount ), players.player_stack Dock så måste jag sätta den snutten i sitt sammanhang för att kunna testa om resultatet är korrekt...och det är det inte. Följande är hela frågan som den ser ut nu: Kod:
SELECT DISTINCT hand.id, SUM( forced.amount ) as amount, players.player_stack as stack HAVING verkar fungera, men "amount" värdet är fel. Kollar jag resultatet så jag ser "hand_id" samt "amount" för varje rad. T.ex. har jag en rad med id 3914 och amount 900, men kör jag "SELECT amount FROM handdata_forced WHERE hand_id = 3914" så får jag två rader, en med 75.00 och en med 150.00. Hur kan det komma sig att amount inte är 225 då? |
Äsch...tydligen så går det inte att referera till ett tabellnamn med alias i en subquery om det faktiskt används som referens till en tabell, men om det refererar till ett värde i en tabell så går det bra.
Så (SELECT SUM(amount) FROM forced WHERE hand_id = hand.id ) ger "Table 'handdata.forced' doesn't exist" Men (SELECT SUM(handdata_forced.amount) FROM handdata_forced WHERE hand_id=hand.id) klagar inte på referensen till "hand.id" och fungerar!?? Speciellt snabbt verkar det inte bli och HAVING verkar snabbare men jag lyckas inte få korrekta resultat med den metoden :( |
Ska du verkligen ha ett SUM-anrop i having-delen? Så var ju inte dit ursprungliga exempel konstruerat.
|
Jag tycker också det ser lite överflödigt ut men fick det från w3schools exempel för GROUP BY och HAVING: http://www.w3schools.com/sql/sql_groupby.asp
Jag har även testat att bara köra amount i HAVING, och det verkar ge samma resultat. Nu har jag dock lyckats få upp hastighheten på min subquery. Istället för att köra den i mina WHERE kriteria så kör jag det i FROM vilket gjorde en väldig skillnad: Kod:
SELECT DISTINCT hand.id as handid |
Alla tider är GMT +2. Klockan är nu 20:01. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson