SELECT * FROM people WHERE user_id = '$ user_id' ORDER BY time GROUP BY фамилия

Мне нужно вытащить все записи в моей базе данных, которые относятся к определенному user_id, заказывать их к моменту их ввода в базу данных (это время php unix time ()), а затем группировать их по фамилии, чтобы они сидели с записи одной и той же фамилии.

Это запрос до сих пор. Хотя это дает мне только определенное количество записей.

$sql = "SELECT * FROM people WHERE user_token='$user_token' ORDER BY time GROUP BY surname"; 

Каков правильный способ использования ORDER и GROUP для того, чтобы получить все результаты, сгруппированные по фамилии, но заказанные к моменту их ввода? Благодарю.

Предложение ORDER BY должно быть последним, но вам нужно указать поля для агрегирования.

Такие как:

 SELECT surname, count(*) FROM people WHERE user_token='$user_token' GROUP BY surname ORDER BY surname 

У вас есть ошибка в синтаксисе SQL, синтаксисе SQL-инъекций и, возможно, вы используете устаревшее расширение базы данных. Итак, вот что должно выглядеть на самом деле:

 $dsn = "mysql:dbname=$db_name;host=$db_host"; try{ $pdo = new PDO($dsn, $username, $password); } catch(PDOException $e){ die($e->getMessage()); } $sql = "SELECT surname, count(id) FROM people WHERE user_token=:usr_token ORDER BY time GROUP BY surname"; $stmt = $pdo->prepare($sql); if ($stmt->execute(array(':usr_token'=>$user_token))){ $result = $stmt->fetchAll(); } else{ print_r($stmt->errorInfo()); die("Error executing query"); } 

Подробнее см. В руководстве PDO