Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
 
 автор: soup-bubble   (05.10.2011 в 16:43)   письмо автору
 
 

Добрый день! Помогите пожалуйста разобраться с запросом:

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

Заранее благодарен

  Ответить  
 
 автор: sl1p   (05.10.2011 в 16:49)   письмо автору
 
   для: soup-bubble   (05.10.2011 в 16:43)
 

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 LIMIT 1))

  Ответить  
 
 автор: soup-bubble   (05.10.2011 в 17:11)   письмо автору
 
   для: sl1p   (05.10.2011 в 16:49)
 

Спасибо за такой быстрый ответ, но тем не менее после выполнения запроса выдает следующую ошибку

#1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

  Ответить  
 
 автор: cheops   (05.10.2011 в 17:17)   письмо автору
 
   для: soup-bubble   (05.10.2011 в 16:43)
 

Нет, так не получится. В MySQL запрещено, чтобы обновляемая таблица одновременная была во вложенной таблице. Что сделать хотите? Может можно как-то иначе переформулировать запрос...

  Ответить  
 
 автор: soup-bubble   (05.10.2011 в 17:19)   письмо автору
 
   для: cheops   (05.10.2011 в 17:17)
 

День добрый!

Давайте я напишу задачу:

Есть поля с одинаковыми scu, и у них разный приоритет, а так же статус, который может быть 0 или 1. Нужно написать запрос, который выбирает из группы полей с одинаковыми scu одно поле с наименьшим приоритетом, при условии что у него status=1; и у него меняет Show_ord на 1

  Ответить  
 
 автор: cheops   (05.10.2011 в 17:40)   письмо автору
 
   для: soup-bubble   (05.10.2011 в 17:19)
 

Если я правильно понял задачу, запрос должен выглядеть как-то так
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

  Ответить  
 
 автор: soup-bubble   (05.10.2011 в 17:44)   письмо автору
 
   для: cheops   (05.10.2011 в 17:40)
 

Я еще не разобрал как он работает - но после теста показывает вроде бы именно тот результат который необходим!

Огромнейшее спасибо!! Счастью моему нет предела1

  Ответить  
 
 автор: soup-bubble   (05.10.2011 в 17:36)   письмо автору
 
   для: cheops   (05.10.2011 в 17:17)
 

Я немного ранее написал запрос, который только выбирает нужные поля (без изменения 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)

можно ли использовать результаты данного запроса чтобы в этих полях изменить Show_ord на 1?

  Ответить  
 
 автор: cheops   (05.10.2011 в 17:41)   письмо автору
 
   для: soup-bubble   (05.10.2011 в 17:36)
 

Про IN и ALL в случае UPDATE можно забыть, если что-то и можно сделать, то только через JOIN.

[поправлено модератором: новый вопрос, про обработчик, выделен в новую тему]

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования