Haluan valita MAX shout_value:n niistä tuloksista joissa product_id = $product_id
Tämä hakee MAX shout_valuen koko taulusta:
SELECT user_id, MAX(shout_value) FROM shouts WHERE product_id = $product_id
Yritin myös sisäkkäisiä hakuja
SELECT user_id, shout_value FROM shouts WHERE product_id = $product_id AND shout_value = (SELECT MAX(shout_value) FROM shouts)
Mutta eipä tuokaan tuota tulosta, kun siinä ehtona on, että se shout_value on koko taulun suurin :/
Siis eli lyhyemmin:
Miten haen MAX arvon tietyn ehdon täyttävistä tuloksista? (muuten kun PHP:n for loopilla)
Tämä temppu ainakin toimii:
SELECT user_id, shout_value FROM shouts WHERE product_id = $product_id ORDER BY shout_value DESC LIMIT 1
Eli rivit haetaan järjestyksessä shout_valuen mukaan, mutta niistä valitaan vain ensimmäinen.
Onnistuisiko GROUP BY:lla?
SELECT user_id, MAX(shout_value) FROM shouts WHERE product_id = $product_id GROUP BY user_id ORDER BY 2 DESC
Äh, ei voi olla totta. Yritin kokoajan saada sitä MAX arvoa taulusta jossa ei ollu yhtään riviä O.o. Tiedä sit jos joku noista olis toiminukki.
Aihe on jo aika vanha, joten et voi enää vastata siihen.