SQL 쿼리를 작동하는 데 문제가 있습니다.왼쪽 조인을 사용하여 SQL 쿼리에 문제가 발생했습니다.
먼저 배경 정보 ... 사용자가 활동을 등록 할 수있는 일정 수의 이벤트가 있습니다. 사용자가 활동을 등록하면 해당 활동의 스팟 수가 하나씩 감소합니다. 사용자가 일정에서 삭제 된 경우 해당 활동의 스팟 수를 1로 늘리는 데 문제가 있습니다.
그래서 내 표는 다음과 같습니다.
Activities: this table is used to register users to a specific activity which is defined by table Activity
+----+------------+----------------+----------+
| ID | activityID | activityUserID | eventID |
+----+------------+----------------+----------+
| 1 | 1 | 2 | 1 |
| 2 | 2 | 2 | 1 |
| 3 | 3 | 2 | 1 |
+----+------------+----------------+---------+
-ID는 각 행을 식별하는 고유 한 키입니다.
-activityID는 사용자가 가입 한 활동 (테이블 Activity.ID)을 참조하는 데 사용됩니다. 예 : 이벤트 1 활동 3에 대한 사용자 가입 한은 다음 activityID 3 것 및 이벤트 ID는
-activityUserID이
Activity: this table contains the activities and descriptions.
+----+---------------------+-------------+---------+
| ID | activityDescription | activityNum | eventID |
+----+---------------------+-------------+---------+
| 1 | test1 | 24 | 1 |
| 2 | test2 | 24 | 1 |
| 3 | test3 | 24 | 1 |
+----+---------------------+-------------+---------+
-ID가이다이 이벤트에 가입 한 사용자의 ID입니다 BE1 것 식별을위한 고유 한 값. 이 값은
-activityNum 대해 어떤 활성 사용자 표지를 참조하는 테이블 활동 (activityID)에서 사용된다
가
여기서 특정 이벤트에 대한 고유 ID를 -eventID 가능한 오픈 스폿의 수는 문제가있는 검색어입니다.
UPDATE activity
SET activity.activityNum = activity.activityNum + 1
WHERE activity.eventID = ".$eventID." //$eventID is a obtained based on the page being viewed
LEFT JOIN activities ON activity.eventID = activities.eventID
WHERE activity.ID = activities.activityID
두 테이블 모두에 eventID가있는 이유는 무엇입니까? 테이블을 정규화 된 상태로 유지해야합니다. –
이전 버전의 표를 복사/붙여 넣었지만 인식하지 못했습니다. 위의 코드를 업데이트하겠습니다. – user1104854