#mysql #sql #pdo
#mysql #sql #pdo
Вопрос:
У меня есть 2 таблицы (уведомления и последующие). Я хочу добавить уведомления для всех пользователей, которые следят за этой страницей. Только для одного пользователя мне нравится это:
INSERT INTO notifications ( from_id , to_id , type, checked, page_id ) VALUES ( :from_id , :to_id , :type, :checked, :page_id)
И я хочу сделать то же самое, но для всех пользователей, которые следят за одной и той же страницей.
важные моменты: page_id указывает страницу, а to_id указывает пользователей.
CREATE TABLE IF NOT EXISTS `notifications` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`from_id` int(11) NOT NULL,
`to_id` int(11) NOT NULL,
`page_id` int(11) NOT NULL,
`type` int(11) NOT NULL,
`checked` tinyint(1) NOT NULL,
`created_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=122 ;
-----
CREATE TABLE IF NOT EXISTS `following` (
`following_id` int(11) NOT NULL AUTO_INCREMENT,
`page_id` int(11) NOT NULL,
`follower_id` int(11) NOT NULL,
`accepted` tinyint(1) NOT NULL,
`time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`following_id`),
UNIQUE KEY `id` (`following_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_turkish_ci AUTO_INCREMENT=82 ;
как я могу этого добиться?
Ответ №1:
Вы используете insert . . . select
синтаксис для вставки нескольких строк из одной таблицы. Я не уверен точно, какие столбцы вы хотите получить от кого, но вот такой подход:
INSERT INTO notifications(from_id, to_id, type, checked, page_id)
select f.follower_id, :to_id, :type, :checked, f.page_id
from following f
where f.page_id = :page_id;