2016-03-23 20 views
0

I 2 DatenbanktabellenUpdate-Tabelle auf Bedingungen aus einer anderen Tabelle basiert

1- Benutzer

id points 

1 100   
2 3   
3 1 

2- user_pages

user_id lp_flag 

1  0   
2  0   
3  0  

Ich versuche haben bin lp_flag = 1 zu aktualisieren, falls vorhanden ID-Punkte < 5 in Benutzer-Tabelle.

Hier ist mein Code Ich möchte es nur mit Cron-Job ausführen.

$Point_row = mysql_query("SELECT * FROM users WHERE points < 5 "); 

foreach($Point_row as $val){if($val['points']<5) { 

mysql_query("UPDATE user_pages SET lp_flag = '1' WHERE user_id = '$id'") 
}else{ 

mysql_query("UPDATE user_pages SET lp_flag = '0' WHERE user_id = '$id'") } 
} 
} 

erwarteten Ergebnisse

user_pages

user_id lp_flag 

1  0   
2  1   
3  1 

becasue ids 2 & 3 Punkte sind < 5 in Benutzer-Tabelle.

+0

Sie müssen Daten von mysql_query holen als mysql_fetch_array ($ Point_row) ' – Saty

Antwort

1

Sie sollten dies in einer Abfrage tun:

update user_pages up join 
     users u 
     on up.user_id = u.id 
    set up.lp_flag2 = (case when u.points < 5 then 2 else 0 end); 

Es besteht keine Notwendigkeit für eine Schleife auf der Anwendungsseite ist.

+0

lassen Sie mich versuchen, dies mit Cronjob – usman

+0

Es funktioniert für mich 100% – usman

0

Sie können diese verwenden:

UPDATE user_pages SET lp_flag = 1 
WHERE user_id IN (SELECT id FROM users WHERE points < 5) 

Wenn Standardwert lp_flag '0' als überhaupt keine Notwendigkeit ELSE Bedingung für UPDATE verwenden '0'.

Verwandte Themen