Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> SQL ORDER + GROUP
AllesKlar  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 4155
Пользователь №: 38635
На форуме: 11 лет, 2 месяца, 23 дня
Карма: 223




Доброго всем.
Чёт туплю, помоожите.

2 значимых поля, в одном цена во втором некий код.

  
price | code
----------------------
10 | AAA
2 | BBB
5 | AAA
15 | CCC
3 | BBB
6 | CCC


Нужно отсортировать по цене, а потом взять только по одному code, самому дешовому из своей группы
Типа такого:
 SELECT * FROM table ORDER BY price ASC GROUP BY code
//Это, естественно, не правильно.

результат чтобы был такой:
2, BBB 
5, AAA
6, CCC

Кто может правильно?


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
paul85  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1836
Пользователь №: 32147
На форуме: 12 лет, 11 месяцев, 4 дня
Карма: 35




По-моему это через подзапрос только делается...

Что-нибудь вроде

SELECT * FROM
(SELECT * FROM table ORDER BY price) AS subq
GROUP BY code

Group by "набирает" по первому включению.

P.s. Если это MySQL
PMПисьмо на e-mail пользователю
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 12174
Пользователь №: 23195
На форуме: 14 лет, 7 месяцев, 26 дней
Карма: 441

Трезвый :
15 лет, 6 месяцев, 26 дней


насколько я помню, это довольно-таки интересная задача, которая иногда предлагается на собеседованиях
решается несколькими способами, с различными извращенными подзапросами (для оптимизации)


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 12174
Пользователь №: 23195
На форуме: 14 лет, 7 месяцев, 26 дней
Карма: 441

Трезвый :
15 лет, 6 месяцев, 26 дней




--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    2   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 4155
Пользователь №: 38635
На форуме: 11 лет, 2 месяца, 23 дня
Карма: 223




paul85
Спасибо. У меня MsSQL
С небольшой доработкой в виде странного костыля работает.
В переводе на MySQL
SELECT * FROM
(SELECT * FROM table ORDER BY price LIMIT 10000) AS subq
GROUP BY code

Без LIMIT не работает, 10000 заведомо большое число ( некрасивый костыль, но с практической точки зрения мне достаточно :) )


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 4155
Пользователь №: 38635
На форуме: 11 лет, 2 месяца, 23 дня
Карма: 223




Invis1ble
Класс, то что надо :)

SELECT code, MIN( price ) AS p
FROM table
GROUP BY
code
ORDER BY p ASC


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 12174
Пользователь №: 23195
На форуме: 14 лет, 7 месяцев, 26 дней
Карма: 441

Трезвый :
15 лет, 6 месяцев, 26 дней


Цитата (AllesKlar @ 18.02.2015 - 02:52)
Invis1ble
Класс, то что надо :)

SELECT code, MIN( price ) AS p
FROM table
GROUP BY
code
ORDER BY p ASC

что-то сильно просто у тебя всё получилось, аж подозрительно smile.gif


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 4155
Пользователь №: 38635
На форуме: 11 лет, 2 месяца, 23 дня
Карма: 223




Invis1ble
Сам в шоке biggrin.gif , но зараза, работает


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса