Добавление условия в эту группу по выражению - PullRequest
0 голосов
/ 21 ноября 2011

У меня есть таблица, состоящая из имени, фамилии и даты, например:

 _________
| People  |____________________________________
|----------------------------------------------|
| first_name  |  last_name  |  date            |
|----------------------------------------------|
| Jerry          Garcia      01/01/2001        |
| Adam           Garcia      01/02/2001        |
| Hans           Fist        01/02/2001        | 
| Lucy           Fist        01/02/2001        |
|______________________________________________|

И у меня есть группировка и порядок по заявлению, как это:

$this->db->group_by("date, last_name");
$this->db->order_by('date ASC');

Естественно, вы ожидаете, что он даст вам только один ряд для двух Гарсиа и один ряд для двух Кулаков. То, что я хотел бы сделать, и помнить об этом, это очень упрощенный случай, это группировать по фамилии, но если last_name = 'Garcia' DONT . Таким образом, в наборе результатов вы увидите и гарций, и только один кулак.

Как мне это сделать?

Если бы это было так просто, как GROUP BY date, last_name NOT 'Garcia'

Ответы [ 4 ]

1 голос
/ 21 ноября 2011

Может быть, вы можете добавить к своему первому запросу что-то вроде

WHERE name != 'Garcia'

А затем выполните

UNION SELECT * WHERE name = 'Garcia'
0 голосов
/ 21 ноября 2011

Я сам придумал решение.Для тех, кто находится в подобной ситуации, просто используйте оператор CASE/WHEN в части SELECT вашего запроса.

Вы можете использовать это как логический флаг в каждой строке для группировки.

CASE `last_name` WHEN 'Garcia' THEN '1' END AS is_garcia
0 голосов
/ 21 ноября 2011

Вы можете использовать условия в предложении GROUP BY, используя HAVING. Затем вы можете объединить два набора результатов, используя ключевое слово UNION.

0 голосов
/ 21 ноября 2011

Вы должны быть в состоянии избавиться от GROUP BY и просто использовать ORDER BY last_name DESC, date ASC.

Обратите внимание: если у вас есть конкретная проблема, которую вы пытаетесь решить, опубликуйте ее с вопросом.Вы получите намного лучший ответ!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...