Использование отдельного и / или сгруппированного по для выбора фильтра - PullRequest
2 голосов
/ 08 февраля 2012

У меня также есть вопрос относительно отдельного и / или группового Моя таблица следующим образом:

|   art   |   ean             |   obs   |   vke   |
---------------------------------------------------
|  type    |  1234567890123   |    1    |   100   |
|  type    |  1234567890123   |    0    |   50    |
|  type    |  1234567890123   |    0    |   60    |
|  type    |  1234567890123   |    0    |   70    |

Мне нужен запрос, чтобы всегда выбирать строку с obs = 1 и только самую дешевую из остальных с obs = 0. Все остальные равные EAN вообще не должны быть перечислены. Возможно ли это?

Таким образом, результат должен быть:

|  type    |  1234567890123   |    1    |   100   |
|  type    |  1234567890123   |    0    |   50    |

Ответы [ 2 ]

1 голос
/ 08 февраля 2012
SELECT art, ean, obs, vke
FROM table_name
WHERE obs = 1
UNION ALL
(
    SELECT art, ean, obs, vke
    FROM table_name
    WHERE obs = 0
    ORDER BY vke
    LIMIT 1
)
1 голос
/ 08 февраля 2012
select art, ean, obs, vke 
from table_name
where obs = 1
union all
select art, ean, obs, min(vke) as vke
from table_name
where obs = 0
group by art, ean, obs

Я бы union два результата: первый - все строки с obs aquals 1, а второй - все строки, сгруппированные по art, ean, obs с obs равно0 и min значение vke.

Подробнее о union и group by.

...