user1104854
user1104854

Reputation: 2167

trouble with SQL query using left join

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

Answers (1)

Keeleon
Keeleon

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

Related Questions