|
|
|
|
|
для: Евгений Петров
(29.06.2005 в 17:26)
| | 1. об этом я предупреждал с самого начала
2. Таблица не сортируются физически, кроме того, сортируете вы ее по индексному полю, что должно быть достаточно быстро (если я ничего не путаю), а в третьих сортируется не вся таблица, а только ваши N записей (см. пост выше). | |
|
|
|
|
|
|
|
для: Loki
(29.06.2005 в 16:43)
| | Да запрос действительно выведет то что мне надо, но есть 2 НО:
1) данные выводятся в обратном порядке (впринципе терпимо)
2) меня мучает вопрос об оптимальности. Ведь насколько я понял вся таблица сортируется, а потом извлекаются записи. И тут же ещё один вопрос: не нарушится ли последовательность расположения записей в таблице после сортировки? | |
|
|
|
|
|
|
|
для: P@Sol
(29.06.2005 в 16:31)
| | >может так?
<?
$result = mysql_querry(select * from book where
avtor like "%0%");
$num_result = mysql_num_rows($result); // допусти 16
for ($i=0; $i < $num_result; $i++)
{
$row = mysql_fetch_array($result);
$name[$i] = $row["name"]; // заносим все записи в $name
}
|
а выводить так
<?
$k=10; //надо 10 записей
if ($num_result > $k) $k=10;
else $k = $num_result;
//$k = 10
for ($i=count($name)-$k; $i<count($name)-1;$i++) //выводим с 16-10 по 15
echo $name[$i];
|
| |
|
|
|
|
|
|
|
для: Евгений Петров
(29.06.2005 в 16:06)
| | Евгений, мой запрос, который я привел в самом верху, как раз и выведет то, что вам нужно:
sql сначала обрабатывает where, затем order, затем limit... Собственно, создайте тестовую базу, да попробуйте. | |
|
|
|
|
|
|
|
для: P@Sol
(29.06.2005 в 16:31)
| | Не, не то. | |
|
|
|
|
|
|
|
для: P@Sol
(29.06.2005 в 16:13)
| | может так?
<?
$result = mysql_querry(select * from book where
avtor like "%0%");
$num_result = mysql_num_rows($result); // допусти 16
if ($num_result > $k) $k=20;
else $k = $num_result; //$k=16
for ($i=0; $i < $k; $i++)
{
$row = mysql_fetch_array($result);
$name[$i] = $row["name"]; // заносим все записи в $name
}
|
а выводить так
<?
for ($i=count($name)-$k; $i<count($name);$i++) //выводим с 0 по 15
echo $name[$i];
|
| |
|
|
|
|
|
|
|
для: P@Sol
(29.06.2005 в 16:13)
| | А вэтом случае выведет все записи где есть 0 | |
|
|
|
|
|
|
|
для: P@Sol
(29.06.2005 в 16:13)
| | Так точно считает что строк 5 и выводит последние 5 записей. Я не прав? | |
|
|
|
|
|
|
|
для: Евгений Петров
(29.06.2005 в 16:06)
| |
$result = mysql_querry(select avtor from book where avtor like "%0%");
$num_result = mysql_num_rows($result);
if ($num_result > $k) $k=10;
else $k = $num_result;
for ($i=0; $i < $k; $i++)
{
$row = mysql_fetch_array($result);
$name[$i] = $row["name"];
}
|
| |
|
|
|
|
|
|
|
для: P@Sol
(29.06.2005 в 15:58)
| | Ну во превых здесь уже два запроса, а во вторых он то выведет 10 или 9 записей, но это будут 9 последних записей. Я постараю сь наглядно это отбразить. Например нужно выбрать последние 5 запсией в которых есть "0":
Что мне нужно?
1111111111
1111011111
1111111110
1111110111
1111101111
1111111111
1111111111
1111110111
1111111111
1111111011
1111111111
Что получится у тебя?
1111111111
1111011111
1111111110
1111110111
1111101111
1111111111
1111111111
1111110111
1111111111
1111111011
1111111111
|
Видишь разницу? | |
|
|
|
|