![]() |
|
Модераторы: skyboy |
![]()
|
|
| Рыжий |
|
|||
![]() Помешанный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1423 Регистрация: 19.9.2004 Репутация: нет Всего: 20 |
Здравствуйте!
Никак не могу прийти к решению: Есть такая таблица: +---+---------+------+ | id | field | item | +---+---------+------+ | 0 | one | 1 | | 1 | two | 2 | | 2 | two | 1 | | 3 | one | 3 | +__+_____+____+ id - auto_increment, primary_key field - поле varchar, которое может принимать разные значения (допустим это one, two, three...) item - через это поле есть связь с другими таблицами, это как itemid Вопрос: Как мне выбрать только те item, у которых field есть one и two (то есть те, что выделены синим), если только один one - не подходит, если только один two - тоже. Нужно, чтобы одновременно one и two. Я уже совсем запутался... вроде как при одном SELECT запрос обрабатывает только одну строку и сравнивать с предыдущими результатами не может. Думал насчет GROUP BY, но так и не удалось его применить нормально. Что подскажите? |
|||
|
||||
| skyboy |
|
||||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
или(не проверено)
|
||||
|
|||||
| Рыжий |
|
|||
![]() Помешанный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1423 Регистрация: 19.9.2004 Репутация: нет Всего: 20 |
skyboy,
Жаль только, что нагрузку на сервер прибавляет значительно. Кроме 'one', 'two' может быть еще 20 других вариантов и собственно этот код еще вклинивается в запрос с LEFT JOIN`ами и WHERE. Да и в БД 140 000 записей и без того, - огого :( Но код классный, позабыл я об INNER JOIN |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
||||
|
||||
| primesite |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 19.5.2009 Репутация: нет Всего: нет |
Как вариант (не проверено):
SELECT item, COUNT(DISTINCT field) as unique_count FROM table GROUP BY item HAVING unique_count > 1; |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Нормальный вариант - при условии что все возможные варианты field должны быть в наличии (есссно заменить >1 на =N, где N - количество вариантов). Если же нужно отобрать определённый набор из возможных вариантов, то добавляется ещё условие отбора, типа (даю для трёх требуемых из более чем трёх возможных)
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |