Update tabeli / mysql php

0

Cześć!
Potrzebuję pomocy jak najprościej wykonać update tabeli USERS o zdobywane punkty z tabeli USER_PKT. Struktura danych jak w załączniku. Potrzebowałbym raz dziennie robić taki update z crona, więc pewnie będzie trzeba dodać jakiś warunek które rekordy zostały już dodane. Ale to sądzę sobie poradzę.

To w jakiejś pętli realizować, czy też da się jednym UPDATE w Mysql?

title

0

Mógłbyś to zrobić za pomocą pojedynczego update z join.

0

Bez sensu wg mnie ta suma punktów w tabeli users. Sumę możesz sobie prostym zapytaniem wyciągnąć, nie ma sensu przechowywać tego.

0

Najprościej to w zapytaniu UPDATE zrobić podzapytanie SELECT które pobierze ilość punktów danego użytkownika z drugiej tabeli i doda do obecne ilości punktów w głównej tabelij.

0
serek napisał(a):

Bez sensu wg mnie ta suma punktów w tabeli users. Sumę możesz sobie prostym zapytaniem wyciągnąć, nie ma sensu przechowywać tego.

Zgadzam się, ale to akurat gotowy system który ktoś kiedyś pisał i muszę na szybko to zmodyfikować. Okey, to spróbuję napisać takie zapytanie i podrzucę do wglądu.

0

Cześć!
Wyrzeźbiłem takie zapytanie (to już prawdziwe nazwy tabel)

UPDATE customers p,
( SELECT customers_id, SUM( points ) AS mysum
FROM customers_points
GROUP BY customers_id ) AS s
SET p.customers_shopping_points = s.mysum + p.customers_shopping_points WHERE p.customers_id = s.customers_id AND s.customers_id =3305 

I działa jak trzeba :)

Tylko potrzebuję jeszcze zawrzeć warunek z wartości tabeli customers_points, więc pasuje tutaj jakiś pewnie LEFT JOIN, ale coś mi to nie idzie. Tam jest przechowywana wartość place_id i muszę koniecznie to zawrzeć w WHERE tego update.

Zrobiłem tak, ale kolumna p.customers_id nie jest odnajdywana. Więc coś mi brakuje.

UPDATE customers p,
( SELECT customers_id, SUM( points ) AS mysum
FROM customers_points
GROUP BY customers_id ) AS s

LEFT JOIN customers_points AS cp ON p.customers_id=cp.customers_id

SET p.customers_shopping_points = s.mysum + p.customers_shopping_points WHERE p.customers_id = s.customers_id AND s.customers_id =3305 

1 użytkowników online, w tym zalogowanych: 0, gości: 1