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

Форум MySQL

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: предыдущая и следущая строки

Сообщения:  [1-7] 

 
 автор: Trianon   (06.06.2008 в 12:18)   письмо автору
 
   для: mastergrom   (06.06.2008 в 11:48)
 

ORDER BY votes DESC, id ASC

>А как добиться что-б в теории был обязан?
вероятно никак.
В теории БД от порядка строк в таблице (равно как и от порядка столбцов в ней) не должно зависеть ничего.

То, что задается конструкцией ORDER BY, не воздействует на саму таблицу.
Оно определяет лишь конечный порядок представления строк результата запроса.

   
 
 автор: mastergrom   (06.06.2008 в 11:48)   письмо автору
 
   для: mastergrom   (06.06.2008 в 01:40)
 

И еще хотел спросить:

мне нужно, что-бы сортировка шла по votes desc, а если писать ORDER BY votes, id desc то резульат совсем не тот ...
Впринципе, если ставить условие ORDER BY votes DESC - то MySQL сортирует в том же порядке. но, как сказал Trianon - в теории совсем не обязан
А как добиться что-б в теории был обязан?

   
 
 автор: mastergrom   (06.06.2008 в 01:40)   письмо автору
 
   для: Trianon   (06.06.2008 в 00:46)
 

Вобщем, как я понял средствами mysql - никак. попробовал с помощью php:


<?php

$result
=mysql_query("SELECT id FROM table ORDER by votes,id DESC");
$num_rows=mysql_num_rows($result);

for (
$i=0;$i<$num_rows;$i++) {
    
$row=mysql_fetch_array($result);
    if (
$i==$num_rows-1$data.=$row['id'];
    else 
$data.=$row['id'].",";
}

function 
show_pn($data,$id) {
    
$numbers=explode(",",$data);
    foreach (
$numbers as $key=>$value) {
        if (
$value==$id$position=$key;
    }
    if (
$position!=0) {
        
$previuos_position=$position-1;
        
$previous=mysql_query("SELECT id FROM table ORDER by votes,id DESC limit $previuos_position,1");
        
$row=mysql_fetch_array($previous);
        echo 
"ID предыдущей строки: ".$row['id']."<br>";
        
    }
    else echo 
"предыдущей строки нет<br>";
    
    if (
$position!=count($numbers)-1) {
        
$next_position=$position+1;
        
$next=mysql_query("SELECT id FROM table ORDER by votes,id DESC limit $next_position,1");
        
$row=mysql_fetch_array($next);
        echo 
"ID следующей строки: ".$row['id']."<br>";
    }
    else echo 
"следующей строки нет";
    
    
}



?>

   
 
 автор: Trianon   (06.06.2008 в 00:46)   письмо автору
 
   для: mastergrom   (05.06.2008 в 23:50)
 

На практике, вероятно, да. (До первого какого-нибудь... восстановления из бэкапа.)
В теории - совершенно не обязан. А раз так - у Вас нет прав строить на этой базе смысл запроса.

Можно, правда, написать для определенности ORDER BY votes, id
Но Вы же не написали...

   
 
 автор: mastergrom   (05.06.2008 в 23:50)   письмо автору
 
   для: Trianon   (05.06.2008 в 23:45)
 

Но даже если 10 значений с votes=0

то при:
SELECT * FROM TABLE ORDER BY VOTES


Mysql отсортирует их в одном и том же порядке, если сделать 5 запросов, правильно ?

   
 
 автор: Trianon   (05.06.2008 в 23:45)   письмо автору
 
   для: mastergrom   (05.06.2008 в 23:30)
 

Представьте себе, что у Вас в таблице ровно 10 строк, и в каждой строке votes = 0.

Вот Вам id = 50. Назовите, пожалуйста, id-ы предыдущей и следующей строк.

   
 
 автор: mastergrom   (05.06.2008 в 23:30)   письмо автору
 
 

есть таблица table:

id votes

оба столбца - int
первичный ключ - id
данные выводятся в таком порядке:

SELECT * FROM table ORDER BY votes DESC


У меня есть id текущей записи.
Как мне узнать id предыдущей строки и id следующей ? Если столбец votes может иметь одинаковые значения ?

   

Сообщения:  [1-7] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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