@D_E_S

Как написать вложенные запрос с условием и перебором?

У нас есть вот такая табличка dbad28c7a6ad40f5bb71ee8d6cfebc57.jpg
Записи туда попарают только если для user нужна новая запись с item.
Т.е у user c id 1 есть запись типа "1 | 101 | 25 | 0" необходимо чтобы у всех пользователей у которых нету запись с item_id = 25 добавить эту запись

Необходимо все сделать одним запросом.

Смог только определить есть ли такая запись у user:
SELECT table.user_id,
  (IF((SELECT COUNT(up.object_id) AS c
    FROM table as up
    WHERE up.user_id= table.user_id
    AND up.item_id = '25'
  )>0,'yes','no')) AS test
FROM table 
GROUP BY table .user_id


Как сделать перебор While в mysql для этого?
  • Вопрос задан
  • 95 просмотров
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Никак. И не нужен тут перебор, и IF не нужен. Достаточно сделать правильный первичный ключ (`User_id`, `Object_id`, `Item_id`) и вставить запись для всех пользователей
INSERT INTO `table` (`User_id`, `Object_id`, `Item_id`, `status`)
  SELECT DISTINCT `User_id`, 101, 25, 0 FROM `table`
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы