Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [mysql]Выбор записи с уникальным значением в поле 
:(
    Опции темы
Sorrow
Дата 8.8.2008, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 27.11.2007

Репутация: нет
Всего: нет



Заранее извиняюсь, если не туда написал.
Есть таблица вида:

id -- name -- pid
1        A       NULL
2        B       1
3        C       1
4        D       2
5        E       3
6        F       3
7        G       4

Подскажите пожалуйста, как составить запрос для вывода id не Null, с минимальным, не повторяющимся значением pid (в данном случае id=4)?


PM MAIL   Вверх
ТоляМБА
Дата 8.8.2008, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 4
Всего: 252



Код
Select *
From TableX
Where
pid=
(Select Min(a.pid)
From
(SELECT  TableX.Pid
FROM TableX
WHERE (((TableX.Pid) Is not Null))
group by TableX.Pid
having count(TableX.Pid)=1) as a)


Добавлено через 6 минут и 5 секунд
Строки 7-11 Выборка всех неповторяющихся и не null pid,
5-6 Выборка из вышеуказанного результата минимального pid
1-4 выборка из таблицы всей записи с нужным pid.

ЗЫ. Модераторам: что-то оформление Кода SQL глючит
PM   Вверх
skyboy
Дата 8.8.2008, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 15
Всего: 260



Код

SELECT min(id)
FROM  tableX
GROUP BY pid
HAVING count(*) = 1


Добавлено через 38 секунд
Цитата(ТоляМБА @  8.8.2008,  10:20 Найти цитируемый пост)
что-то оформление Кода SQL глючит

где?
PM MAIL   Вверх
ТоляМБА
Дата 8.8.2008, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 4
Всего: 252



skyboy
Цитата(Sorrow @  8.8.2008,  14:06 Найти цитируемый пост)
с минимальным, не повторяющимся значением pid
В твоём случае если pid со значениями 2 и 4 поменять местами - выдаст запись тоже с id=4, хотя по условию вопроса должно с id=7. Или я не догнал вопрос?
Цитата(skyboy @  8.8.2008,  15:29 Найти цитируемый пост)
где?
Раньше была подцветка кода и нумерация строк сейчас нету.

PM   Вверх
skyboy
Дата 8.8.2008, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 15
Всего: 260



Цитата(ТоляМБА @  8.8.2008,  11:48 Найти цитируемый пост)
Раньше была подцветка кода и нумерация строк сейчас нету.

у меня есть. сброс кеша не привел к катастрофе: все работает по-прежнему.
Цитата(ТоляМБА @  8.8.2008,  11:48 Найти цитируемый пост)
выдаст запись тоже с id=4, хотя по условию вопроса должно с id=7

черт. похоже, ты прав и это я неверно понял условие. 
но, вообще говоря, у меня min работает только в пределах одинаковых pid, потому вернет все. и id=4, и id=7 и все остальные с уникальными pid. а в каком порядке вернет - неизвестно. так что, да, запрос мой неверен.
тогда предлагаю так:
Код

SELECT min(id)
FROM  tableX
GROUP BY pid
HAVING count(*) = 1
ORDER BY pid 
LIMIT 1

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.1092 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.