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
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Помогите сделать выборку с исключениями
Покинул форум
Сообщений всего: 393
Дата рег-ции: Апр. 2012
Помог: 2 раз(а)
Мелкий пишет:
Сгруппируйте по name и всё.
Или select distinct
Так вроде SELECT DISTINCT будет удалять только столбцы с одинаковым именем. Т.е. хотя бы 1 столбец он выведет.
т.е.
id | name | data
1 | one | 1
2 | two | 1
3 | one | 2
Мы получим (используя дистинкт) и исключение по`data`
id | name | data
1 | one | 1
2 | two | 1
А нужен результат
id | name | data
2 | two | 1 (Добавление)
eai пишет:
Попробуй как то так
MIN я использовал только что бы была какая то агрегация на поле
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
NeuroZ пишет:
Вообще решения не вижу. Задача в том, чтобы не выбирались поля, если name хотя бы 1 раз повторилось.
Тем не менее, это - решение для вашей задачи.
----- PostgreSQL DBA
NeuroZ
Отправлено: 26 Июня, 2012 - 19:34:18
Посетитель
Покинул форум
Сообщений всего: 393
Дата рег-ции: Апр. 2012
Помог: 2 раз(а)
Мелкий пишет:
NeuroZ пишет:
Вообще решения не вижу. Задача в том, чтобы не выбирались поля, если name хотя бы 1 раз повторилось.
Тем не менее, это - решение для вашей задачи.
Тогда можно пожалуйста готовый код, я думаю Вам не составит труда написать пару строчек.
Мелкий
Отправлено: 26 Июня, 2012 - 20:54:15
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Уже написан. Весь смысл в группировке и последующем having'е - выбираются те, количество строк которых = 1
----- PostgreSQL DBA
NeuroZ
Отправлено: 26 Июня, 2012 - 21:16:18
Посетитель
Покинул форум
Сообщений всего: 393
Дата рег-ции: Апр. 2012
Помог: 2 раз(а)
Говорю же не работает.
Суть сводиться к тому, чтобы НЕ ВЫБИРАТЬ значения у которых повторяется name. А у нас в любом случае ВЫБИРАЕТСЯ хотя бы ОДНО. (Добавление)
Если отдельно делать
SELECT *
FROM `table`
GROUP BY `name`
HAVING COUNT( * ) =1
ORDER BY `name`
То всё хорошо. А если так
SELECT *
FROM `table`
WHERE `data` = 1
GROUP BY `name`
HAVING COUNT( * ) =1
ORDER BY `name`
То все плохо. (Добавление)
SELECT *
FROM `table`
GROUP BY `name`
HAVING COUNT( * ) =1
AND `data` =1
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.