0

私がやろうとしているのは、テーブルを検索して文字のインスタンスを数え、各インスタンスの ID を mysql と php (PDO) に保存することです。

私がいじっていたのはこれです:

$user = 'john';
$stmt = $pdo->prepare("SELECT id, SUBSTR(surname, 1, 1) as surname_init,COUNT(*) as count FROM first_table WHERE user = :user GROUP BY surname_init ORDER BY count DESC");
$stmt->bindValue(":user", $user);

$stmt->execute();
$row = $stmt->fetchAll(PDO::FETCH_ASSOC);

var_dump($row);

結果は次のとおりです。

array (size=2)
  0 => 
    array (size=3)
      'id' => string '3' (length=1)
      'surname_init' => string 'B' (length=1)
      'count' => string '2' (length=1)
  1 => 
    array (size=3)
      'id' => string '7' (length=1)
      'surname_init' => string 'D' (length=1)
      'count' => string '1' (length=1)

B には 2 つのインスタンスがあり、D には 1 つのインスタンスがあります。ただし、「B」には、2 つから返された結果の ID が 1 つしかありません。

これは可能ですか?ここで何かが足りないと思います..

4

2 に答える 2

3

GROUP_CONCAT()次のように、group by に一致するすべての行を取得するために使用します。

SELECT
    GROUP_CONCAT(id) AS id_list,
    SUBSTR(surname, 1, 1) as surname_init,
    COUNT(*) as count
FROM first_table
WHERE user = :user
GROUP BY surname_init
ORDER BY count DESC
于 2013-08-13T01:19:20.990 に答える