| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MySQL > Найти (если есть) разницу в двух таблицах |
| Автор: maxipub 12.1.2016, 19:14 | ||
| Здравствуйте! Есть:
Мы имеем некоторые входные данные по парам user_id и user_group. И для этих данных нужно: 1) убедиться, что в таблице posts для указанного списка пар user_id и user_group есть lists.user_count записей (или больше); 2) если для какой-либо пары user_id и user_group предыдущее условие неверно, необходимо получить информацию об этом. Например, входные данные по парам user_id и user_group: 1 10 1 20 2 100 Для первой lists.user_count = 1, и в posts есть 1 запись, значит все ок. Для второй пары lists.user_count = 2 в posts есть 3 записи - все ок. А вот для третей пары lists.user_count = 2, но в таблице posts есть только 1 запись. Вот об этом информацию нам и надо получить. Это можно сделать MySQL решением? Одним запросом надо обрабатывать все пары user_id и user_group. Может уже вечер, но как бился, ничего не получается. Смотрю в сторону LEFT JOIN со сравнением COUNT, но пока без результатов. нужна свежая мысль. |
| Автор: Akina 12.1.2016, 21:46 | ||
Конечно.
|
| Автор: maxipub 13.1.2016, 11:01 |
| Хм, группируем posts чтоб получить необходимые count-ы, джойним и делаем выборку по условию. Вроде бы все и очевидно, но вчера додуматься не удалось. И такое еще уточнение, выборку нужно делать не для всех данных, а для определенных пар user_id и user_group. Я же правильно понимаю, что с точки зрения производительности, добавлять условие вида ((user_id=1 AND user_group=10) OR (user_id=1 AND user_group=20) ... ) в WHERE стоит и в выборке во временную таблицу pp, и в основном запросе одновременно? Обе таблицы, и lists, и posts не маленькие (но и не огромные). |
| Автор: maxipub 13.1.2016, 11:21 |
| Спасибо, будем работать! |