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
FROM handdata_hand AS hand, handdata_players AS players, handdata_forced AS forced
WHERE players.hand_id = hand.id
AND forced.hand_id = hand.id
GROUP BY hand.id
HAVING (
(
players.player_stack /
SUM( forced.amount )
)
BETWEEN 0
AND 5
)
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
FROM handdata_hand AS hand,
handdata_card AS card1,
handdata_card AS card2,
handdata_players AS players,
handdata_forced AS forced,
handdata_position AS position
WHERE card1.hand_id=hand.id
AND card2.hand_id=hand.id
AND players.hand_id=hand.id
AND position.hand_id=hand.id
AND forced.hand_id=hand.id
AND card1.player_id=players.player_id
AND card2.player_id=players.player_id
AND ((card1.value LIKE 'A_' AND card2.value LIKE 'Q_')
AND (card1.type = 'showdown' OR card1.type = 'deal')
AND (card2.type = 'showdown' OR card2.type = 'deal'))
AND (position.seatcount BETWEEN 1 AND 10)
AND (players.player_seat BETWEEN position.SB AND position.UTG)
GROUP BY hand.id
HAVING (
(
stack /
SUM( amount )
) BETWEEN 0 AND 5)
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å?