Какой запрос использовать: REPLACE/WHERE NOT EXISTS/NOT INPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Какой запрос использовать: REPLACE/WHERE NOT EXISTS/NOT IN

Сообщение Anonymous »

В базе данных существует отношение один ко многим, которое необходимо обновить.
Существует таблица задач и таблица пользователей, которые связаны с таблицей Task_users, содержащей три столбца: id, Task_id, user_id. Одновременно с задачей может быть связано несколько пользователей, поэтому могут быть такие записи, как:

Код: Выделить всё

id    task_id    user_id
0     1          20
1     1          48
2     2          20
Первая часть скрипта удаляет user_id, который не возвращается в такой форме:

Код: Выделить всё

(new \database\DataSource)->main()->query('DELETE FROM task_users WHERE', [
'task_id' => (int) $values["id"],
'user_id NOT IN' => $values["assigned_users"]
])
Здесь идентификатор — целое число, а назначенные_пользователи — это массив целых чисел.
Это работает по назначению.
Во второй части я хочу вставить назначенных_пользователей, которые не являются еще в таблице, но пропустите назначенные_пользователи, которые уже являются частью таблицы.
Итак, когда пользователи 20 и 48 были назначены раньше, но теперь я хочу назначить 20 и 55 задаче, которую она должна обновить:

Код: Выделить всё

id    task_id    user_id
0     1          20
2     2          20
3     1          55
Я пробовал REPLACE INTO, INSERT INTO с предложением WHERE NOT IN и INSERT INTO SELECT * FROM Task_users WHERE NOT EXISTS, но мне не удалось заставить его работать должным образом.
Я пробовал REPLACE INTO, INSERT INTO с предложением WHERE NOT IN и INSERT INTO SELECT * FROM Task_users WHERE NOT EXISTS, но мне не удалось заставить его работать должным образом.
p>
Я фронтенд-специалист, поэтому я не так уж хорошо разбираюсь в этом. Я надеюсь, что кто-нибудь еще знает, был ли я почти на месте, но сделал что-то не так, или мне нужно написать совершенно другой тип SQL-скрипта.

Код: Выделить всё

foreach ($values["assigned_users"] as $assigned_user) {
//пробовал это

Код: Выделить всё

(new \database\DataSource)->main()->query('REPLACE INTO task_users', [
'task_id' => (int) $values["id"],
'user_id' => $assigned_user
])
//и это

Код: Выделить всё

(new \database\DataSource)->main()->query('INSERT INTO task_users', [
'task_id' => (int) $values["id"],
'user_id' => $assigned_user
] , 'WHERE', [
'task_id' => (int) $values["id"],
'user_id NOT IN' => $values["assigned_users"]
])
//и это

Код: Выделить всё

(new \database\DataSource)->main()->query('INSERT INTO task_users', [
'task_id' => (int) $values["id"],
'user_id' => $assigned_user
] , 'SELECT * FROM task_users WHERE NOT EXISTS', [
'task_id' => (int) $values["id"],
'user_id' => $assigned_user
])
}
Сценарий PHP и использует функции построителя запросов к базе данных Nette

Подробнее здесь: https://stackoverflow.com/questions/789 ... sts-not-in
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • MySQL; какой запрос использовать: REPLACE/WHERE NOT EXISTS/NOT IN
    Anonymous » » в форуме Php
    0 Ответы
    39 Просмотры
    Последнее сообщение Anonymous
  • Какой запрос использовать: REPLACE/WHERE NOT EXISTS/NOT IN
    Anonymous » » в форуме Php
    0 Ответы
    30 Просмотры
    Последнее сообщение Anonymous
  • Всегда получаю ошибку 403 Forbidden, даже если она должна возвращать 404 Not Exists (проблема приложения Java Spring)
    Anonymous » » в форуме JAVA
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Когда приложение получит install_referrer с содержимым utm_source=(not%20set)&utm_medium=(not%20set)?
    Anonymous » » в форуме Android
    0 Ответы
    247 Просмотры
    Последнее сообщение Anonymous
  • Как использовать $exists в методе производного запроса для mongodb в весенних данных
    Anonymous » » в форуме JAVA
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Php»