Reputation: 2167
I'm having a bit of trouble getting a SQL query to work.
Some background first...I'm working with events that have a certain number of available spots for users to register for activities. When a user registers for an activity, the number of spots for that particular activity is reduced by one. I'm having trouble increasing the number of spots for that activity by one if a user is removed from an event.
So My tables are as follows.
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 is a unique key to identify each row.
-activityID is a used to reference which activity the user is signing up for (table Activity.ID). Ex: user signs up for activity 3 in event 1: The activityID would be 3 and eventID would be1
-activityUserID is the ID of the user who signed up for this event
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 is a unique value for identifcation. This value is used in table activities(activityID) to reference which activity a user signs up for
-activityNum is the number of open spots available
-eventID a unique ID for a specific event
Here is the query that I'm having trouble with
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
Upvotes: 0
Views: 93
Reputation: 1422
I agree with Michael however your Join syntax is incorrect. The proper way to do what you asked is:
UPDATE activity
LEFT JOIN activities ON activity.eventID = activities.eventID
SET activity.activityNum = activity.activityNum + 1
WHERE activity.ID = activities.activityID AND activity.eventID = $eventID
Although this syntax will produce what you attempted I'm not sure if it's what you intended. I'm confused as to what eventID in the tables are doing. Is it supposed to "group" activities together?
Upvotes: 3