У меня есть таблица, которая выглядит так:
ID Name Location
1 peter New York
2 john New York
3 jack New York
4 shaun London
Как вы видите, значения столбцов местоположения могут быть одинаковыми для многих пользователей. Как я могу получить только один результат от каждого местоположения при поиске в Нью-Йорке?
Я использую эти SQL-запросы:
$stmt = $pdo->prepare('SELECT * from users WHERE location SOUNDS LIKE :s');
$stmt->bindValue(':s', '%' . $query . '%' , PDO::PARAM_INT);
$stmt->execute();
$values = $stmt->fetchAll();
$count = $stmt->rowCount();
if($count > 0){
foreach($values as $val){
echo $val['location'];
}
}
Обратите внимание: я не хочу использовать LIMIT 1
потому что это для формы поиска, и были бы другие местоположения, которые пользователь может захотеть просмотреть, как Newcastle при вводе нового.
Возможно ли это, или мне нужно создать другую таблицу с отношением друг к другу с таблицей пользователей?
Вы можете сделать что-то вроде этого:
SELECT *
FROM users
WHERE ID IN (SELECT MIN(id)
FROM users
WHERE location SOUNDS LIKE :s
GROUP BY location
);
$stmt->bindValue(':s', '%' . $query . '%' , PDO::PARAM_INT); $stmt->execute(); $values = $stmt->fetchAll();
id
.