więc tak, mam dwie tabele customer i customer_group o mniej więcej takiej strukturze
| customer | --------------------- customer_id - id klienta group_id - id grupy do ktorej klient nalezy bill - wartość rachunku, ilość wydanych pieniedzy | customer_group | --------------------------- group_id - id grupy amount - minimalna ilość wydanych pieniędzy by klient moglbyc przypisany do grupy
I potrzebuje zmienić grupę do ktorej nalezy użytkownik gdy ilosc jego wydanych pieniedzy jest wieksza
od minimalnej ilosci pieniedzy pot....( amount )
i np.
| customer| ------------------------ customer_id | group_id | bill 1 | 2 | 100 2 | 1 | 200 3 | 2 | 150 4 | 2 | 200 | customer_group | ------------------------ group_id | amount 1 | 150 2 | 0 3 | 190
i przy takich danych chce by
klient 1 zostal bez zmian
klient 2 zostal przypisany do grupy 3
klient 3 zostal przypisany do grupy 1
klient 4 zostal przypisany do grupy 3 ( wybierana jest grupa o najwiekszej wartosci amount, ale taka ze bill >= amount )
i chcialem wszystko załatwić jednym zapytaniem lecz cos mi nie wychodzi :/
wymyśliłem jedynie zeby pobrac jednym zapytaniem customer_id i group_id,
a pozniej poscic for i pokolei dawać zapytania z update,
ale to zapytanie zawraca mi tez klientow ktorzy pozostaja bez zmian gdzie group_id = null
oto moje zapytanie
SELECT customer_id, ( SELECT groups.group_id FROM customer_group AS groups WHERE customer.group_id != groups.group_id AND customer.bill >= groups.amount ORDER BY groups.amount DESC LIMIT 1 ) AS `group` FROM customer