LIMIT 8, -1

ayrat9

Новичок
LIMIT 8, -1

В какой версии MySQL это работает? Не в 5-ой случайно?

Как для четверки (4.1) правильно вывести ВСЕ оставшиеся записи из БД?
Т.е допустим я выбрал с 1 по 8-ю записи (удовл. некоторому условию) из БД, а затем мне понадобилось получить сумму всех оставшихся строк, удовл. этому же условию.
 

DiMA

php.spb.ru
Команда форума
count(1) вернет число строк, не содержащих NULL в первой колонке

а count(*) действительно вернет число строк
 

ayrat9

Новичок
никак не пойму..

а как же "... получить сумму всех ОСТАВШИХСЯ строк, ..."

где MySQL должен понять, что мне нужно кол-во строк, за исключением уже выбранных?
 

DiMA

php.spb.ru
Команда форума
Ты хочешь ОДНИМ запросом получить строки с Х по У (по Лимиту) и тут же число общее строк на запрос (как будто бы Лимита не было)?
 

Фанат

oncle terrible
Команда форума
нет, ему не знакома арифметическая операция вычитания.
 

ayrat9

Новичок
нет, не одним запросом
PHP:
...
$sql_query="SELECT id, name, url FROM table WHERE some_condition LIMIT 0, 10";
$sql_res=mysql_query($sql_query, $conn_id);
if (mysql_num_rows($sql_res)>0)
{
$sql_query1="SELECT COUNT(*) FROM table WHERE some_condition LIMIT 10, 1000";
$sql_res1=mysql_query($sql_query1, $conn_id);
}
вот из-за цифры 1000 я эту тему и создал: не знаю как выбрать все оставшиеся строки.

PS Все цифры кроме 1000 создаются в динамике

-~{}~ 13.05.05 21:38:

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

Фанат

oncle terrible
Команда форума
чувак.
выбрать количество ВООБЩЕ ВСЕХ строк, и вычесть полученные тебе в голову не приходит?
совсем, никак?
 

ayrat9

Новичок
LIMIT 10, -1

вот такое позволяет получить то что мне нужно, но работает, по-видимому только в 5 версии
 

Фанат

oncle terrible
Команда форума
тебе надо КОЛИЧЕСТВО оставшихся строк, или ОСТАВШИЕСЯ сттроки?
и вообще, в БД нет такого понятия - "оставшиеся строки".
 

ayrat9

Новичок
наконец-то открыли мне веки
спасибо

простое решение = лучшее
 

Фанат

oncle terrible
Команда форума
Хуже всего - это когда человек сам не знает, чего хочет.
И вот он будет ходить, парить мозги окружающим, мямлить, путаться в своих вопросах.
писать, что ему нужны строки, но при этом упорно писать в запросе COUNT(*) .

Вместо того, чтобы просто запросить всю таблицу.

Ты что делаешь-то, страдалец? Какого ёжика рожаешь?
Поясни почтенной публике.
Какой смысл в этой гениальной конструкции - запросить с лимитом, если хоть что-то вернуло - запросить остальное?
 

ayrat9

Новичок
сейчас вы будете смеяться: постраничный вывод :)

сорри, дорогой спаситель, запарился под вечер
 

Фанат

oncle terrible
Команда форума
а зачем для постраничного делать вывод ВСЕГО ОСТАВШЕГОСЯ?
 

ayrat9

Новичок
ВСЕГО - не надо, с чего ты взял?

-~{}~ 13.05.05 22:03:

я вроде везде говорил про "...сумму оставшихся строк..."
 

Фанат

oncle terrible
Команда форума
Ага. И LIMIT 10, -1 возвращает КОЛИЧЕСТВО, по-твоему, а не сами строки?
 

ayrat9

Новичок
ну это же только часть запроса

кстати:
----------
Для того, чтобы выбрать все строки с определенного смещения и до конца результата, вы можете использовать значение -1 в качестве второго параметра:

mysql> SELECT * FROM table LIMIT 95,-1; # Retrieve rows 96-last.

в какой версии MySQL это работает, я так и не нашел
 

ayrat9

Новичок
требую поместить этот топик в юмор
В качестве обоснования просьбы привожу ржачный (сейчас только осознал) кусок кода, который был написан до профилактической промывки моих мозгов.
---------------------
PHP:
$sql_query="SELECT id, name, url FROM ".$sql_pref."_cat_arts WHERE parent_id='".$catalog_rub_id[($catalog_rub_num-1)]."' AND enable='Yes' ORDER BY code LIMIT ".$first.", ".$kol."";
	$sql_res=mysql_query($sql_query, $conn_id);
	if (mysql_num_rows($sql_res)>0)
	{
		$out.="<table width='100%' cellspacing='0' cellpadding='0' border='0'>";
		$out.="<tr><td width='190'>&nbsp;</td><td width='10'>&nbsp;</td><td width='190'>&nbsp;</td><td width='100%' bgcolor='#EEEAD9' style='padding: 5 15 5 7;'>";
		for($i=1; $i<=$num; $i++)
		{
			if($i==$num) $out.="<a href='?page=".$i."'><b style='color: #B20700;'>".$i."</b></a>&nbsp;&nbsp;"; else $out.="<a href='?page=".$i."'><b>".$i."</b></a>&nbsp;&nbsp;";
		}
$sql_query1="SELECT id FROM ".$sql_pref."_cat_arts WHERE parent_id='".$catalog_rub_id[($catalog_rub_num-1)]."' AND enable='Yes' ORDER BY code LIMIT ".($first+$kol).", 1000";
	$sql_res1=mysql_query($sql_query1, $conn_id);
		for($i=($num+1); $i<=($num+ceil(mysql_num_rows($sql_res1)/$kol)); $i++)
		{
			$out.="<a href='?page=".$i."'><b>".$i."</b></a>&nbsp;&nbsp;";
		}
		$out.="</td></tr>";
		$x=1;
		while(list($id, $name, $url)=mysql_fetch_row($sql_res))
		{
....
 
Сверху