Сейчас я работаю над поисковой системой, очень устаревшей в 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