Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сравнение нескольких полей / 8 сообщений из 8, страница 1 из 1
31.08.2016, 18:52
    #39301434
paharok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение нескольких полей
Добрый день всем. Возникла такая проблема.
Данных много, так что я просто пример приведу.
Есть таблица user. Там 2 ячейки
user_id и cat_id

Уникального поля нет. Пример данных в таблице

user_id | cat_id
--------------------
1 | 10
1 | 12
2 | 10
2 | 11


Надо получить id юзера у которого cat_id и 10 и 12. Проблема в том что они в разных полях вообще. Не могу ничего придумать.
Оператор IN может вернуть юзера который ИЛИ с cat_id 10 или 12 , А вот чтоб и то и другое.
Помогите кто чем может, пожалуйста.
...
Рейтинг: 0 / 0
31.08.2016, 19:04
    #39301446
3unknown
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение нескольких полей
Код: sql
1.
2.
3.
4.
5.
select user_id 
from t
where cat_id in(10,12) 
group by user_id
having count(distinct cat_id) = 2
...
Рейтинг: 0 / 0
31.08.2016, 19:27
    #39301461
paharok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение нескольких полей
3unknown,
Спасибо за помощь. Может ещё какие варианты приходят в голову?
Желательно без having count(distinct cat_id).
...
Рейтинг: 0 / 0
31.08.2016, 20:11
    #39301476
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение нескольких полей
paharokЖелательно без having count(distinct cat_id).Причина?

paharokМожет ещё какие варианты приходят в голову?2 отдельные выборки по каждому из cat_id, и связать.

paharokУникального поля нет.А пара полей - уникальна?
...
Рейтинг: 0 / 0
31.08.2016, 20:28
    #39301484
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение нескольких полей
Ещё вариант - приджойнить эту же таблицу
Код: sql
1.
2.
3.
4.
select user_id 
from t as cat10
join t as cat12 using(user_id)
where cat10.cat_id = 10 and cat12.cat_id = 12
...
Рейтинг: 0 / 0
31.08.2016, 21:31
    #39301509
paharok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение нескольких полей
Akina,
1. Неизвестное количество было, но уже переписал и сейчас не имеет значение. Но появилась новая проблема
Надо узнать количество подходящих полей с уникальным user_id

select COUNT (distinct user_id)
from t
where cat_id in(14,69)
group by user_id
having count(distinct cat_id) = 2

Пробую таким запросом, но вообще не работает. Может с этим подскажите? Буду благодарен

2. надо одним запросом.

3.пары полей уникальны
...
Рейтинг: 0 / 0
31.08.2016, 21:49
    #39301519
3unknown
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение нескольких полей
Код: sql
1.
2.
3.
4.
select user_id
from t
group by user_id
having count(user_id)=1
...
Рейтинг: 0 / 0
31.08.2016, 21:59
    #39301525
paharok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сравнение нескольких полей
Всем огромное спасибо за помощь. Всё сделал.

Использовал пример 3unknown , только немного переделал свой запрос.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сравнение нескольких полей / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]