質問: データを表示したいときは ``` SELECT `id`, `name` FROM table WHERE id>10 ``` 件数を表示したいときは ``` SELECT COUNT(*) FROM table WHERE id>10 ``` と思います。 ですがコチラを1つの文でまとめることはできないのでしょうか? その際 php で出力する際いつもコチラを使っていますがコチラは正しい方法なのでしょうか? ``` $sql='SELECT `id`, `name` FROM table WHERE id>10'; $stmt=$dbh->prepare($sql); $stmt->execute(); foreach($stmt as $result){ $id[]=$result['id']; $name[]=$result['name']; } foreach($name as $val){ echo "名前は".$val; } ``` もし最初から1つのデータしかなければ『foreach』でまわす必要はなく foreach($stmt as $result) を使わないほうがいいのではないのか?と疑問をもっていつも使っています。 ご回答宜しくお願いいたします。
回答: 「where id>10」というのが、よく分からないですが、 SQLで「limit」を使わないのであれば、 KiyoshiMotokiさんの1つ目の回答の内容で十分ではないでしょうか。 とはいえ、「limit」も使う(?)ようなので、 以下のような方法が考えられますね。 ``` -- 対象のレコードに全件数を付与 SELECT T1.id , T1.name , T3.cnt FROM table T1 , ( SELECT COUNT('X') as cnt FROM table T2 WHERE T2.id > 10 ) T3 WHERE T1.id > 10 -- もしくは、以下のように最後につなげる。 SELECT T1.id , T1.name , 0 as cnt FROM table T1 WHERE T1.id > 10 UNION ALL SELECT 0 as id , '' as name , COUNT('X') as cnt FROM table T2 WHERE T2.id > 10 ```