fast-je
@fast-je
Пишу на php.

Как вывести одинаковые значение полей через mysql?

Всем привет!
Короче сейчас вопрос стоит так.
Есть бд users там хранятся юзеры: id, username.
есть бд users_auth там хранится последний вход пользователя на сайт. Там есть поля: id_user, user_agent, gpu, screen, langs(языки).

Мне нужно вывести пользователей у которых совпадают между собой значения полей допустим user_agent and gpu. Причем поиск может быть разным, в разных комбинациях gpu and screen и т.д.

Важно понимать что сейчас поиск не идет через where, хотя он тоже может быть если я захочу и буду знать по чем искать.

допустим у нас есть записи 1,2,3,4,5,6 у записей 1 и 2 между собой одинаковые поля user_agent and gpu и 4 и 6 тоже между собой одинаковые записи. ТО есть мы выведем 1,2 потом 4,6

Основой запрос идет к таблице users, а потом уже джойить таблицу users_auth но я хз как это сделать, чтобы искало совпадения само.

Также допустим мы хотим найти у кого одинаковые: user_agent, gpu, screen, langs
Как я говорил ранее поиск допустим по user_agent and gpu, записи 1 и 2, 3 и 4 были одинаковыми между собой, мы добавили langs и screen и у юзеров 3 и 4 отличается langs, значит они не должны выводиться, то есть при 100% совпадении всех полей в поиске только в этом случае выводим пары юзеров.

Мне вчера подсказали сделать такой запрос. Но у него ошибка.
5d5a4a42b34d7988598038.jpeg

Также сегодня подсказали сделать так
5d5a4b04bc24e998461361.jpeg

Оно работает, но что с ним дальше делать ума не приложу, типа через пыху взять и уже новый запрос делать, не знаю.

Вообщем вот ссылка на sqlfiddle, help!!!!
  • Вопрос задан
  • 111 просмотров
Решения вопроса 1
ThunderCat
@ThunderCat
{PHP, MySql, HTML, JS, CSS} developer
SELECT u0.username, u1.*
FROM users_auth AS u1, users_auth AS u2 
LEFT join users AS u0
on u0.id = u2.user_id
WHERE u1.user_agent = u2.user_agent
AND u1.screen = u2.screen
AND u1.id != u2.id 
ORDER BY u2.user_agent,u2.screen;
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@d-stream
Готовые решения - не подаю, но...
из второй таблицы нужное количество раз group by по нужным комбинациям и это использовать как элемент join к первой таблице (select as table, cte, etc)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы