Поиск пользователей с одинаковыми именами по внутренним объединенным запросам PHP + MySQL - PullRequest
0 голосов
/ 03 декабря 2018

Сейчас я работаю над поисковой системой, очень устаревшей в PHP + MySQL ... Владелец попросил меня ввести две кнопки для применения фильтров к основному запросу.Первая кнопка должна найти только пользователей с одинаковыми именем и фамилией, вторая должна найти только пользователей с одинаковыми фамилиями.Теперь в ATM-запросе используются разные объединения (внутренние и левые получают другую информацию из других таблиц)

$query = "
  SELECT s1.*,s2.first_name,s2.last_name,s2.email,s2.id as subscriber_id,s2.phone,s2.info,a.id as agency_id,a.info as agency_info,a.invoice as agency_invoice
  FROM subscription as s1
  LEFT JOIN agency as a
  ON s1.agency=a.id
  INNER JOIN subscriber as s2
  ON s1.subscriber=s2.id
  WHERE $matches AND s1.deleted=0
  ORDER BY s1.id DESC
  LIMIT $maxid,$limit
";

Все работает правильно, но если я добавлю предложения для группы пользователей по одному и тому же full_name, он вернет только один результат на полное имя...

Итак, если у меня есть такая таблица

+------------+-----------+
| first_name | last_name |
+------------+-----------+
| Foo        | Bar       |
| Foo        | Bar       |
| Bar        | Foo       |
| Bar        | Foo       |
| John       | Doe       |
+------------+-----------+

Возвращает

+------------+-----------+
| first_name | last_name |
+------------+-----------+
| Foo        | Bar       |
| Bar        | Foo       |
+------------+-----------+ 

Теперь ... пункты, которые я добавляю в запрос, таковы (считай и группи)

$query = "
  SELECT s1.*,s2.first_name,s2.last_name,s2.email,s2.id as subscriber_id,s2.phone,s2.info,a.id as agency_id,a.info as agency_info,a.invoice as agency_invoice, Count(s2.*) AS Cnt
  FROM subscription as s1
  LEFT JOIN agency as a
  ON s1.agency=a.id
  INNER JOIN subscriber as s2
  ON s1.subscriber=s2.id
  WHERE $matches AND s1.deleted=0
  GROUP BY s2.first_name, s2.last_name HAVING Cnt>1
  ORDER BY s1.id DESC
  LIMIT $maxid,$limit
";

Но, как я уже сказал ... это не работает, и я не знаю почему ... в чем я не прав?Это зависит от присоединения?Есть ли способ найти решение или с помощью этого запроса мне нужно найти другое решение?Пожалуйста, помогите мне, я пробовал другие решения, но ни за что!: D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...