2014-02-03 4 views
0

Я просто новичок в mysql, поэтому в школе у ​​нас есть задача сделать. Все идет так. Отображение/печать 10% всех книг из книг в порядке убывания. Поэтому я пытался использовать лимит, но он не работает. Что я могу сделать? Мой код я пытался использовать:отображение 10 процентов всех элементов mysql

select title, price from book order by price desc limit (select count(*)*0.1 from book);

спасибо за ваши ответы!

ответ

0

limit Значения должны быть жестко заданными константами. Вы не можете использовать переменные на них, например. select ... limit @somevar - синтаксическая ошибка. Вы также не можете использовать подзапросы или другие динамические значения. Таким образом, вы застряли либо выборки строки подсчитать загодя и вещи его в строку запроса как «жестко закодированы» значение:

$ten_percent = get_from_database('select count(*)/10 from book'); 
$sql = "SELECT .... LIMIT $ten_percent"; 

Или вы просто извлечь все, а затем прервать свой цикл, как только вы» ve достигло 10%:

$sql = "SELECT ...."; 
$result = mysql_query($sql) or die(mysql_error()); 
$total_rows = mysql_num_rows($result); 
$fetched = 0; 
while($row = mysql_fetch_assoc()) { 
    $fetched++; 
    if ($fetched >= ($total_rows/10)) { 
     break; // abort the loop at 10% 
    } 
    ... do stuff with $row 
} 
+0

спасибо за ваше время, но мне нужен код в mysql. Можно ли это решить в mysql? – poppytop

+0

вы могли бы построить свою строку как динамический sql в mysql, используя хранимую процедуру, в основном то же самое, что и в примере с двумя строками выше. уродливый, но выполнимый. –

+0

Могу ли я спросить вас, можете ли вы сделать это для меня? Мне действительно нужна помощь в этом. мы даже не знаем основ mysql, и они дали нам это. – poppytop

Смежные вопросы