Вставляя значение в таблицу, вместо того, чтобы просто присваивать значение одной записи, оно присваивает его всем:
CREATE TABLE IF NOT EXISTS user
(
userID VARCHAR(50) NOT NULL,
userName VARCHAR(40) NOT NULL,
PRIMARY KEY (userID)
);
CREATE TABLE IF NOT EXISTS rewards
(
rewardID VARCHAR(5) NOT NULL,
rewardDescription VARCHAR(20) NOT NULL,
PRIMARY KEY (rewardID)
);
CREATE TABLE IF NOT EXISTS promos
(
issueDate DATETIME DEFAULT CURRENT_TIMESTAMP,
expiryDateOfReward DATETIME GENERATED ALWAYS AS(issueDate + INTERVAL 6 MONTH),
quantity BIT DEFAULT 0,
userID VARCHAR(50) REFERENCES user(userID),
rewardID VARCHAR(5) REFERENCES rewards(rewardsID),
PRIMARY KEY(userID, rewardID)
);
INSERT INTO user
VALUES('DV2015', 'Bob'),
('DV2016', 'Mary'),
('DV2017', 'Megan');
INSERT INTO rewards
VALUES('rw10', '10% Off'),
('rw20', '20% Off'),
('rw30', '30% Off');
INSERT INTO promos (issueDate, quantity, userID, rewardID)
VALUES(DEFAULT, DEFAULT, 'DV2016', 'rw10'),
(DEFAULT, 1, 'DV2015', 'rw20'),
(DEFAULT, DEFAULT, 'DV2017', 'rw30');
Затем я выбираю его:
SELECT userName,
rewards.rewardID,
rewards.rewardDescription,
promos.quantity
FROM user
JOIN promos
ON user.userID = promos.userID
JOIN rewards
ON promos.rewardID = promos.rewardID
WHERE user.userID = 'DV2015';
Я не знаю, была ли ошибка в создании таблиц, вставке записей или в операторе выбора.
Вот как это выдает:

Я только хочу, чтобы у Боба с идентификатором пользователя 'DV2015' 'количество' равнялось 1 для 'rw20'. rw10 и rw30 должны иметь количество 0. Однако при вставке данных он дает ему все награды