Можно ли сделать следующую выборку одним запросом?

BB

Новичок
Можно ли сделать следующую выборку одним запросом?

Мне надо выбрать данные из таблицы по параметру_1 в порядке убывания и вывести сгруппировав по параметру_2. Можно ли это сделать одним sql-запросом? MySQL 3
 

Фанат

oncle terrible
Команда форума
а можно пример?
а то как-то слабо представляется в теории
 

BB

Новичок
есть таблица с данными о телефонах с такими полями: id_t, tel_madeby, tel_model, date_add, time_add. Хочу вывести список 20 последних добавленных телефонов, причём чтобы Samsung к Samsung'у, Nokia к Nokia, т.е отсортировать сразу по производителю...
 

Фанат

oncle terrible
Команда форума
не понял.
тебе надо ОТСОРТИРОВАТЬ по второму параметру, а не сгруппировать, что ли?
 

BB

Новичок
Да, отсортировать по второму(tel_madeby), причём сначала выбрать 20 последних телефонов. Я написал так:
SELECT id_t, tel_madeby, tel_model, date_add, time_add FROM mobile GROUP BY tel_madeby ORDER BY id_t DESC LIMIT 20
Но так неправильно! Не могу разобраться что не так?
 

Фанат

oncle terrible
Команда форума
Да, отсортировать
Я написал так:
SELECT id_t, tel_madeby, tel_model, date_add, time_add FROM mobile GROUP BY
ты знаешь, я как-то не понял, что ты делаешь
сначала пишешь, что надо сортировать.
потом, строчкоё ниже - группируешь.
по-моему, ты сам не знаешь, чего хочешь
 

BB

Новичок
Если написать
SELECT id_t, tel_madeby, tel_model, date_add, time_add FROM mobile ORDER BY id_t DESC LIMIT 20 (без GROUP BY),
то получается список последних 20-ти телефонов(Samsung X700, Nokia N90, Samsung E530 и т.д.) А надо получить тот же список только в виде Samsung X700, Samsung E530, Nokia N90...
 

Фанат

oncle terrible
Команда форума
это повод писать с GROUP BY? а почему именно с GROUP BY, а не с INET_TO_ATON?
 

BB

Новичок
Так ты не знаешь как мне получить нужный мне результат?
 

BB

Новичок
спасибо, буду знать что одним запросом это нереально написать...
 

Фанат

oncle terrible
Команда форума
может, и можно.
только совершенно непонятно - зачем.
 

Фанат

oncle terrible
Команда форума
удали из своего скрипта все переводы строк.
получишь гораздо больший выигрыш в компактности
 

SmokyPython

Новичок
можно такой запрос
select * from table where id_t>(select id_t from soft order by id_t desc limit 20,1) order by tel_model;"

наверное смысл получать сортировку из базы все таки есть: например не нужно данные по массивам распихивать
 

Фанат

oncle terrible
Команда форума
SmokyPython
а распихивать всё равно нужно. чтобы в шаблон передать.
 

BB

Новичок
Я сделал вот так, а как Вы посоветуете раскидать по массивам?
$q_inf = "SELECT fun_r.id_r, fun_r.razdel, fun_r.dir, fun_p.id_p, fun_p.p_name, DATE_FORMAT(fun_p.date_add, '%a %e %b %Y %T') AS e_date FROM fun_r, fun_p WHERE fun_p.id_r=fun_r.id_r ORDER BY fun_p.id_p DESC LIMIT 20";
$q_inf_r = mysql_query ($q_inf);
while ($myrow = mysql_fetch_array ($q_inf_r)) {
$rss_inf [$myrow ["id_r"] . "||" . $myrow ["id_p"]] = $myrow ["razdel"] . "||" . $myrow ["p_name"];
}
ksort ($rss_inf);

foreach ($rss_inf as $key => $value) {
$mas_1 = explode ("||", $key);
$mas_2 = explode ("||", $value);
echo $mas_1 [0], $mas_1 [1];
echo $mas_2 [0], $mas_2 [1];

}
 

Фанат

oncle terrible
Команда форума
кошмар.
BB, в пхп массивы могут содержать в себе массивы.
то есть, я ещё могу понять вот это $myrow ["id_r"] . "||" . $myrow ["id_p"]], но вот в этом - $myrow ["razdel"] . "||" . $myrow ["p_name"]; - смысла нет никакого!
просто пиши =$myrow;
и потом из него бери всё, что нужно
$value у тебя будет равняться $myrow из базы
 
Сверху