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

Форум MySQL

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

 

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

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

тема: Конструкции LIMIT и WHERE
 
 автор: nax   (03.12.2007 в 15:35)   письмо автору
 
 

Добрый вечер.

SELECT name,count FROM test LIMIT 4,2 WHERE name>=123

Почему не выполняется запрос? Где ошибка?

   
 
 автор: cheops   (03.12.2007 в 15:46)   письмо автору
 
   для: nax   (03.12.2007 в 15:35)
 

Конструкция LIMIT всегда располагается последней
SELECT name,count FROM test WHERE name>=123 LIMIT 4,2

   
 
 автор: Faraon   (03.12.2007 в 15:47)   письмо автору
 
   для: nax   (03.12.2007 в 15:35)
 


SELECT name,`count` FROM test WHERE name>=123 LIMIT 4,2 


P.S. count зарезервированное слово в Mysql и для корректной работы заносится в обратные кавычки

   
 
 автор: nax   (03.12.2007 в 16:06)   письмо автору
 
   для: nax   (03.12.2007 в 15:35)
 

Спасибо огромное! В книгах, к сожалению, об этом не пишут.

UPD: забыл спросить, что делать то теперь?)
Как мне из записей с 4-6 выбрать те, у которых name>=123?
На SQL никак? Придется перебирать все записи в поисках большего 123х?

   
 
 автор: ddhvvn   (03.12.2007 в 16:15)   письмо автору
 
   для: nax   (03.12.2007 в 16:06)
 

Че ты Вы вообще тут намутили :))

Вам ЧТО нужно? Объясните сразу и понятно!

Если что не ясно, подскажу: запрос cheopsа выбираTт поля name и count 2-х записей из последних 6 (т.е. 5 и 6), у которых поле name=>123

   
 
 автор: nax   (03.12.2007 в 16:26)   письмо автору
 
   для: ddhvvn   (03.12.2007 в 16:15)
 

Эммм... Теперь, кажется, начинаю понимать, что сказал глупость. Просто думал, что в MySQL действия выполняются поочереди: вначале он выберет все записи с "name>=123", а потом уже из них выберет 4,5,6 элементы. Такой способ нерационален (проверяются и нужные, и не нужные элементы на предмет ">=123"), поэтому я и огорчился %).

Теперь понял, что он понимает условие полностью.

Спасиб ещё раз.

   
 
 автор: Trianon   (03.12.2007 в 19:03)   письмо автору
 
   для: ddhvvn   (03.12.2007 в 16:15)
 

запрос cheopsа не выбираTт ничего конкретного, поскольку LIMIT без ORDER BY смысла не несет.

   
 
 автор: ddhvvn   (03.12.2007 в 19:11)   письмо автору
 
   для: Trianon   (03.12.2007 в 19:03)
 

>запрос cheopsа не выбираTт ничего конкретного, поскольку LIMIT без ORDER BY смысла не несет.

Почему? Вроде по умолчанию сортируется по первичному ключу =))

   
 
 автор: Trianon   (03.12.2007 в 19:18)   письмо автору
 
   для: ddhvvn   (03.12.2007 в 19:11)
 

>Почему? Вроде по умолчанию сортируется по первичному ключу =))
нет.
Это не так.

   
 
 автор: nax   (03.12.2007 в 19:04)   письмо автору
 
   для: nax   (03.12.2007 в 15:35)
 

Извините, что пишу здесь же, но новую тему из-за такого пустяка создавать не вижу смысла:
Нужно подсчитать количество элементов, удовлетворяющих условию. Делаю такой запрос:


SELECT count(name,'count') FROM test WHERE name>=123 LIMIT 4,2

Потом с помощью mysql_fletch_rows() считаю количество элементов.
Но, опять же, запрос некорректен. Если в скобочках count написать * или 1 значение, работает. С несколькими же элементами работать отказывается. Подозреваю, что опять ошибка в синтаксисе.

   
 
 автор: Trianon   (03.12.2007 в 19:10)   письмо автору
 
   для: nax   (03.12.2007 в 19:04)
 

функция COUNT считает не число элементов, а число строк. И у нее один и строго один параметр.

   
 
 автор: nax   (03.12.2007 в 19:12)   письмо автору
 
   для: Trianon   (03.12.2007 в 19:10)
 

Спасибо.

Это усложняет задачу...

   
 
 автор: Trianon   (03.12.2007 в 19:19)   письмо автору
 
   для: nax   (03.12.2007 в 19:12)
 

несильно. Но определиться с термином "последние" Вам придется.

   
 
 автор: ddhvvn   (03.12.2007 в 19:10)   письмо автору
 
   для: nax   (03.12.2007 в 19:04)
 

Что-то интересное =)))
Вы запрашиваете кол-во И ТУТ ЖЕ его укаываете LIMITом :-D
Вам нужно кол-во чего? Всех записей удовлетворяющих условию?


SELECT count(*) FROM test WHERE name>=123

?

   
 
 автор: nax   (03.12.2007 в 19:13)   письмо автору
 
   для: ddhvvn   (03.12.2007 в 19:10)
 

Да я к примеру :). Просто скопипастил тупо. Разумеется, в исходнике без лимита)

   
 
 автор: nax   (03.12.2007 в 19:31)   письмо автору
 
   для: ddhvvn   (03.12.2007 в 19:10)
 

Разобрался.
В книгах, блин, ничему не учат. Всё приходит с опытом.

   
Rambler's Top100
вверх

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