Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день! Помогите пожалуйста разобраться с запросом:
UPDATE katalog SET Show_ord=1
Where priority IN
(SELECT DISTINCT scu, id_photo, Status, priority From katalog k1
WHERE Status=1 AND priority=ALL(
SELECT MIN(priority) FROM katalog k2
WHERE Status=1 AND k2.scu=k1.scu))
#1241 - Operand should contain 1 column(s) - ошибка, и выделяет MIN
Неактивен
Where priority IN ( здесь необходимо выбрать 1 колонку, а вы выбираете несколько.
Неактивен
Не могли бы Вы тогда помочь написать правильно запрос, который обновляет Show_ord на 1 в том случае, если Status=1 и затем выбирает из полей с одинаковым scu, поле у которого минимальный priority?
Неактивен
Это два разных запроса: один update, другой select. Или сформулируйте точнее.
Неактивен
Есть поля с одинаковыми scu, и у них разный приоритет, а так же статус, который может быть 0 или 1. Нужно написать запрос, который выбирает из группы полей с одинаковыми scu одно поле с наименьшим приоритетом, при условии что у него status=1; и у него меняет Show_ord на 1
Неактивен
выбирает среди полей со status=1 или сначала ищет min(priority), а потом проверяет какой status?
Неактивен
сначала выбирает только поля у которых Status=1, а затем среди них ищет минимальный приоритет
я немного ранее написал запрос, который только выбирает нужные поля (без изменения Show_ord) из таблицы:
select distinct scu, Status, priority from katalog k1 where Status=1 and priority=all(select min(priority) from katalog k2 where Status=1 and k2.scu=k1.scu)
может поможет
Неактивен
Неактивен
что то после проверки этого запроса - зависла БД, не выполнив его(
Неактивен
ошибка или просто думает долго?
Неактивен
В таком варианте будет работать быстрее:
Неактивен
при таком запросе он выдает ошибку о неизвестной колонке t1, которая по моему не определена
Неактивен
Замените t1 на k
Неактивен
#1054 - Unknown column 't.priority' in 'where clause'
На другом форуме помогли написать запрос - и вроде бы он быстро выполняется
Неактивен
soup-bubble написал:
#1054 - Unknown column 't.priority' in 'where clause'
Это называется опечатка.
Замените as prioroty на as priority
soup-bubble написал:
На другом форуме помогли написать запрос - и вроде бы он быстро выполняется
UPDATE
(SELECT
scu,
MIN(priority) AS minimum
FROM katalog
GROUP BY scu) AS mink
LEFT JOIN
katalog as k
ON
k.scu = mink.scu AND
k.priority = mink.minimum
SET
k.Show_ord = 1
Попробуйте сами догадаться почему он не правильный
Неактивен
Потому что Show_ord будет равен 1 если даже статус = 0 в том случае, если scu не повторяется?
Неактивен
Да, и в том случае если повторяется тоже. Проверки то на статус нет.
Неактивен
А Ваш запрос действительно правильно работает! Спасибо огромное!
И я был бы очень благодарен если бы Вы помогли его внедрить в php.
Неактивен
Задайте лучше вопрос про php на webew.ru
Неактивен
Спасибо огромное за помощь и совет!
Вы очень выручили)
Неактивен