이상은 내가 그린 구성표입니다. content.user
이 그룹화 된 이상적인 경우가 있습니다. 그러나 보통 그들은 그룹화되지 않습니다. 어떤 난이 방식에서 의도하는 것이다 : 첫번째 단계
번째 단계
users.id = content.user
는 I마다
content.cpc
값users.monetos
을 감소 어디users.monetos
을 선택 (2.1, 2.2) 이 시뮬레이션 경우
: 선택 content.user
(9)
users.id=content.users
(15)
그래서 우리가 users.id=9
에 대한 users.monetos
15 값을 가질 경우 363,210
이 users.monetos
을 선택, 지금 우리는 내용 테이블 로 돌아가서 :
- 8 (
content.cpc
) (15와 15의 값을 감소 8 = 7> 0 -> 2) - 감량 7 (이전 단계의 결과를) 단계로 이동 10 (
content.cpc
) (7-10 = -3 < 0 -> 업데이트 콘텐츠 설정 활성 = '0' 여기서 content.id = (현재 ID가 수득 부정 결과))에 대한
그리고 이런 모든 content.user
의 확장 - I = 1 (N)content.active
이 contet.*
행을 선택하고 싶다. 이 데이터가 있으면 SELECT
users.monetos
WHERE users.id
= content.user
이전 쿼리에서 가져온 것입니다. 최대 (N)에 의해 그리고 지금, 단계는 내가 content.cpc ** users.monetos = 0 또는 0보다 작은 경우는, 내가 content
및 SET를 업데이트 할 순간에 값 및 에 의해 users.monetos
값을 감소 각 내용 항목 (각 content.cpc) 활성 = '0'** 단어
, 나는 users.monetos를 공유하고 원하는 양. users.monetos이 없습니다. 현재 content
항목이 비활성화됩니다. 그리고이 모든 것을하십시오. content.user 나는 지금이 순간에 무엇을했는지 보여줍니다. 나는 지금 정말로 안좋아 보이지만, 나는 무엇을해야할지 이미 모른다.
$query = "select content.id, content.cpc, conent.user, content.active from content a
join users b on a.user=b.id
group by b.id where a.active='1'";
/** cycle each user **/
foreach($rows = $connector->fetchArray($query) as $row) {
$monetos = $row['monetos'];
$query = "select id, cpc from content where user={$row['id']}";
/** cycle each users content **/
foreach($contents = $connector->fetchArray($query) as $content) {
echo $monetos;
$monetos -= $content['cpc'];
if($monetos <= 0) {
$disable[] = $content['id'];
}
}
if(isset($disable)) {
$connector->query("update content set active='0' where id in(".implode(',',$disable).")");
}
}
그것은 당신을 돕기 위해 정말 열심히합니다. 그리고 당신이 복잡한 alghoritm을 구현하려고 할 때, 당신의 생각을 이해하기 쉽게 스키마를 만드는 것이 더 나을 것이라고 생각합니다. – CrazySabbath
그냥 잠깐 내 –
@ CrazySabbath 있습니다. 불행히도 고마워요. –