Это звучит, как базы данных выглядит следующим образом:
users
-----
deviceID
pushToken
OS
subscriptions
-------------
deviceID
pushToken
Если это так, то вы можете вставить DeviceId и pushToken в таблицу подписок в то же время, даже если у вас есть только DeviceId с помощью запрос, как это (предполагается, что «123abc» является DeviceId вы вставляете):
INSERT subscriptions (deviceID, pushToken)
SELECT deviceID, pushToken
FROM users
WHERE deviceID = '123ABC';
Однако, это обычно не считается, что хороший дизайн для базы данных. Как правило, вы не хотите повторять данные в двух местах. В этом случае идентификаторы deviceID и pushToken сохраняются как в таблице пользователей, так и в таблице подписок. Это может быть улучшение:
users
-----
id
deviceID
pushToken
OS
subscriptions
-------------
id
user_id
Если база данных была построена таким образом, вы можете вставить новую запись в таблицу подписки, используя этот SQL (опять же для DeviceId из «123abc»):
INSERT subscriptions (user_id)
SELECT id
FROM users
WHERE deviceID = '123ABC';
Я специально не вставлял идентификатор, потому что я предполагаю, что это будет автоматически увеличивать идентификатор, предоставляемый базой данных.
Нет необходимости указывать идентификатор устройства в таблице подписок. Просто иметь идентификатор пользователя достаточно, чтобы «соединить» таблицы. Вы будете «подключать» эти таблицы, используя SQL из своего php-кода.Если вы хотите знать DeviceId и pushToken пользователя с подпиской на 25, то SQL может выглядеть следующим образом:
SELECT deviceID, pushToken FROM users, subscriptions
WHERE users.id = subscriptions.user_id AND subscriptions.id = 25;
Если вы хотите знать все подписки, принадлежащие пользователю с DeviceId «123abc», попробуйте это запрос:
SELECT * FROM users, subscriptions
WHERE users.id = subscriptions.user_id AND user.deviceID = '123ABC';
Надеюсь, что это поможет.
Я заполнил имена таблиц, чтобы каждый мог понять мой пример ... на самом деле есть devideID и pushTokens .. – 2013-05-03 16:07:34
«последнее имя», вероятно, является эффективной ссылкой на отношения. так что вы не потеряете 'last name', не заменяя его колонком' user_id', чтобы поддерживать связь с таблицей 'user' – gillyspy
, ребята смотрят мое редактирование. я сожалею о путанице, но это не так. имена составлены так, что вопрос не слишком технический. – 2013-05-03 16:12:42