LIMIT 8, -1

  • Автор темы Автор темы ayrat9
  • Дата начала Дата начала

ayrat9

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

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

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

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

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

где MySQL должен понять, что мне нужно кол-во строк, за исключением уже выбранных?
 
Ты хочешь ОДНИМ запросом получить строки с Х по У (по Лимиту) и тут же число общее строк на запрос (как будто бы Лимита не было)?
 
нет, ему не знакома арифметическая операция вычитания.
 
нет, не одним запросом
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:

нет ну можно, конечно тупо загонять полученные в первом запросе айдишники в массив и впихивать его в условие второго вопроса, но некрасиво как-то
...
 
чувак.
выбрать количество ВООБЩЕ ВСЕХ строк, и вычесть полученные тебе в голову не приходит?
совсем, никак?
 
LIMIT 10, -1

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

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

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

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

сорри, дорогой спаситель, запарился под вечер
 
а зачем для постраничного делать вывод ВСЕГО ОСТАВШЕГОСЯ?
 
ВСЕГО - не надо, с чего ты взял?

-~{}~ 13.05.05 22:03:

я вроде везде говорил про "...сумму оставшихся строк..."
 
Ага. И LIMIT 10, -1 возвращает КОЛИЧЕСТВО, по-твоему, а не сами строки?
 
ну это же только часть запроса

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

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

в какой версии MySQL это работает, я так и не нашел
 
требую поместить этот топик в юмор
В качестве обоснования просьбы привожу ржачный (сейчас только осознал) кусок кода, который был написан до профилактической промывки моих мозгов.
---------------------
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))
		{
....
 
Сверху