Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: SELECT выборка с сортировкой
Форумы портала PHP.SU » » Работа с СУБД » SELECT выборка с сортировкой

Страниц (1): [1]
 

1. divine108 - 20 Февраля, 2012 - 10:03:01 - перейти к сообщению
Здравствуйте!
Помогите пожалуйста новичку, как селектом из базы брать определенную запись с учетом сортировки? допустим мне надо взять их таблицы 4-ую запись в порядке убывания по номеру ИД. Не могу никак написать правильный запрос, пока имеют вот такую запись.

$result = mysql_query("SELECT UID,City,Area,Ammount,Title FROM Records ORDER BY UID LIMIT 4") or die("Invalid query: " . mysql_error());
2. Panoptik - 20 Февраля, 2012 - 10:23:41 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `table` ORDER BY `id` LIMIT 4,1
3. divine108 - 20 Февраля, 2012 - 10:26:32 - перейти к сообщению
Спасибо, вот эта запись за лимитом два числа, что значит?
И еще вопрос, как допустим выбрать по полю DATE , TIMESTAMP там у меня с секундами..
Также можно?

И как быть если допустим нужна четвертая запись с конца таблицы?
4. Мелкий - 20 Февраля, 2012 - 10:37:17 - перейти к сообщению
divine108 пишет:
Спасибо, вот эта запись за лимитом два числа, что значит?

limit с_какой_строки, сколько_строк
(Добавление)
divine108 пишет:
И как быть если допустим нужна четвертая запись с конца таблицы?

Определитесь, что такое конец таблицы, отсортируйте в обратном порядке и выберите 4-ую запись.
5. Dezmont - 20 Февраля, 2012 - 13:05:22 - перейти к сообщению
divine108 пишет:
Спасибо, вот эта запись за лимитом два числа, что значит?
И еще вопрос, как допустим выбрать по полю DATE , TIMESTAMP там у меня с секундами..
Также можно?

И как быть если допустим нужна четвертая запись с конца таблицы?


По полю DATE,TIMESTAMP точно так же можете сортировать. Чтобы выбрать 4 запись с конца, просто добавьте DESC.

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `table` ORDER BY `id` DESC LIMIT 3,1
6. divine108 - 20 Февраля, 2012 - 13:17:40 - перейти к сообщению
Спасибо!
7. divine108 - 21 Февраля, 2012 - 09:06:18 - перейти к сообщению
Еще один вопрос, требуется из таблицы выбрать 6 фирм производителей товаров, названия фирм их их ИД хранятся в одной таблице, товары в другой, в таблице товаров у каждой записи есть ИД фирмы производителя.
Как составить mysql запрос так, чтобы он вывел 6 фирм спектр товаров которых наиболее широко представлен. То-есть те 6 первых фирмы , у которых в таблице товаров больше всех.
8. Panoptik - 21 Февраля, 2012 - 09:13:41 - перейти к сообщению
если скажем есть таблица фирмы (brand) с полями (id,name)
и таблица товаров (good) с полями (id, brand) запрос будет примерно таким
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT `brand`.*, COUNT(`good`.`id`) AS `goods` FROM `brand` LEFT JOIN `good` ON `good`.`brand` = `brand`.`id` GROUP BY `good`.`id` ORDER BY `goods` DESC LIMIT 6
9. divine108 - 21 Февраля, 2012 - 12:06:25 - перейти к сообщению
Спасибо!
10. divine108 - 21 Февраля, 2012 - 14:21:48 - перейти к сообщению
Panoptik пишет:
если скажем есть таблица фирмы (brand) с полями (id,name)
и таблица товаров (good) с полями (id, brand) запрос будет примерно таким
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT `brand`.*, COUNT(`good`.`id`) AS `goods` FROM `brand` LEFT JOIN `good` ON `good`.`brand` = `brand`.`id` GROUP BY `good`.`id` ORDER BY `goods` DESC LIMIT 6


У меня к Вам просьба, разберите пожалуйста этот запрос по частям чтобы понять как он работает, я повторил тупо, но понять его механизм не могу. Что этот синтаксис значит?
11. snikers987 - 21 Февраля, 2012 - 14:33:53 - перейти к сообщению
www[dot]google[dot]com/m?q=JOIN+MYSQL&am[dot][dot][dot]&channel=new
12. Panoptik - 21 Февраля, 2012 - 14:42:02 - перейти к сообщению
divine108 пишет:
У меня к Вам просьба, разберите пожалуйста этот запрос по частям чтобы понять как он работает, я повторил тупо, но понять его механизм не могу. Что этот синтаксис значит?
а этот запрос еще и работает? я его от фонаря написал)))
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2.   SELECT 'список_полей, которые можно получить'
  3.   FROM 'из какой таблицы'
  4.   JOIN 'объединяем таблицы связывая их как описано ниже'
  5.   ON ' относится к JOIN тут описывается условие по какому будут объединяться таблицы: таблица1.поле(первичный_ключ) = таблица2.поле(внешний_ключ)'
  6.   GROUP BY 'так как в запрос попадут все товары, которые нам не нужны, мы групируем их'
  7.   ORDER BY 'сортируем по количеству товаров для каждой фирмы COUNT(`good`.`id`)'
  8.   DESC 'относится к сортировке - означает что сортировать будем от большего к меньшему'
  9.   LIMIT 'ограничиваем вывод первыми N записями'
  10.  

 

Powered by ExBB FM 1.0 RC1