$query = "SELECT loved FROM users WHERE uid=:quitter";
$query = "UPDATE users SET status='0', loved=NULL, beloved_count='0' WHERE uid=:deceased";
$query = "UPDATE users SET beloved_count=beloved_count-1 WHERE uid=:lover";
Потому что это может быть не ясно из моего кода, вот что происходит:
Пользователь 123 выхода. мне нужно
1) Узнайте, кто 123 «любил»
2) Обновление 123 в строке (набор статус = «0» и т.д.)
3) Обновление «любимого» строка пользователя и уменьшить «beloved_count» по 1Объедините SELECT и два ОБНОВЛЕНИЯ?
Все это происходит в пределах одного стола. Может ли это случиться с одним запросом? В идеале, я хотел бы сделать это с одним запросом, но даже два были бы лучше, чем там, где я нахожусь с тремя отдельными запросами.
Я просмотрел JOIN
, но мне это просто не ясно, так как я никогда не использовал их раньше. Я видел примеры комбинаций запросов, но ничего, что отражает это. Я использую PHP 5.4 и PDO.
Что-то вроде:
$query = "UPDATE users SET status='0', loved=NULL, beloved_count='0' WHERE uid=:deceased;
UPDATE users SET beloved_count=beloved_count-1 WHERE uid=:lover;";
Два обновления меняют разные данные на основе различных условий. вам было бы лучше делать два запроса, а не пытаться придумать огромное запутанное чудовище. –
У меня создалось впечатление, что с некоторыми базами данных и расширениями возможно получить значение, возвращаемое из обновления. Это, наверное, неприменимо здесь, да? – David
Согласитесь с Marc B - как академическое упражнение, его * возможно *, чтобы объединить обновления и даже выполнить обновления как побочные эффекты выбора, - но на практике это не очень хорошо. (и нет, его невозможно в SQL для UPDATE возвращать данные). – symcbean