У меня есть 2 таблицы, первая — страница продукта посетил
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| idproduct | varchar(128) | YES | | NULL | |
| logdate | date | YES | | NULL | |
| idmagasin | int(20) | YES | | NULL | |
| idenseigne | int(20) | YES | | NULL | |
| commanded | int(2) | YES | | 0 | |
+------------+--------------+------+-----+---------+----------------+
И второй продукт скомандовал
+-------------+--------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+-------------------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| idproduct | varchar(255) | NO | | NULL | |
| idenseigne | int(11) | NO | | NULL | |
| idmagasin | int(11) | NO | | NULL | |
| ingredients | tinytext | YES | | NULL | |
| date | timestamp | NO | | CURRENT_TIMESTAMP | |
+-------------+--------------+------+-----+-------------------+----------------+
Как я могу обновить столбец скомандовал в product_visited, if product_visited.idproduct = product_commanded.idproduct and product_visited.logdate = product_commanded.date
я запутался в использовании внутреннее соединение или же существует
я бы хотел update product_visited.commanded = 1
когда значение logdate
а также idproduct
существует в product_comaged, это также будет означать, что посещаемый продукт
Я считаю, что это то, что вы ищете:
Update product_visited pv
set commanded = 1
Where exists (Select 1
from product_commanded pc
where pv.idproduct = pc.idproduct and pv.logdate = pc.date
);
Хорошо, я угадал с полями соединения, но вы после чего-то вроде этого;
UPDATE pv
SET pv.Commanded = 1
FROM Product_Visited pv
JOIN Product_Commanded pc
ON pv.logdate = pc.date
AND pv.idproduct = pc.id
Внутреннее соединение означает, что вы собираетесь обновлять записи в Product_Visited только в том случае, если в Product_Comaged есть соответствующие строки на основе предикатов соединения, которые вы ему предоставили.
Примечание: это ответ SQL Server. Может или не может работать в MySQL
Похоже, вы хотите обновить commanded
когда существует запись для того же продукта в commanded
Таблица?
в любой базе данных:
Update product_visited set commanded = 1
Where exists(Select * from product_commanded
where product_id = product_visited.Product_id)