MySQL4.1に格納されているテーブルから情報を取り出し、PHPを使用してブラウザに表示したいのですが以下のような場合はどうしたらよいのでしょうか


■テーブルA
order_id | goods_id | user_id | date
-----------------------------------------
1 | 1 | 1 |20070520
1 | 2 | 1 |20070520
1 | 3 | 1 |20070520
2 | 1 | 2 |20070521

上記のテーブルから値を取り出し、

date | user_id | goods_id
---------------------------
20070520| 1 |1,2,3
20070521| 2 |2

のようにブラウザに表示したいです。
ポイントとしてはorder_id 1つにつき1行で表示したいという点になります、また表示する順番は日付の新しい順で表示したいです、ですのでこの場合に必要なSQL文とPHPのソースを示していただければと思います

どんぴしゃ、かつ具体的な回答を一番最初にいただけた方に200ポイント差し上げます

よろしくお願いします

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/05/20 08:22:47
  • 終了:2007/05/20 09:37:29

回答(1件)

id:stephanie No.1

stephanie回答回数29ベストアンサー獲得回数22007/05/20 09:16:54

ポイント200pt

テーブル名をordersと仮定していますがこんな感じでしょうか

<?php
$host = '127.0.0.1';
$user = '';
$pass = '';
$name = '';
$dp = @mysql_pconnect($host, $user, $pass);
mysql_select_db($name);

$query = "SELECT date, user_id, GROUP_CONCAT(goods_id) AS goods FROM orders GROUP BY date, user_id ORDER BY date DESC;";
$result = mysql_query($query, $dp);
echo "date|user_id|goods_id<br />";
while ($row = mysql_fetch_assoc($result)) {
    echo $row['date'] . '|' . $row['user_id'] . '|' . $row['goods'] . '<br />';
}
?>

実行結果は

date|user_id|goods_id
2007-05-21|2|1
2007-05-20|1|1,2,3

になります。

データベース構造はこんな感じです。

CREATE TABLE `orders` (
  `order_id` int(11) NOT NULL,
  `goods_id` int(11) NOT NULL,
  `user_id` int(11) NOT NULL,
  `date` date NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `orders` (`order_id`, `goods_id`, `user_id`, `date`) VALUES 
(1, 1, 1, '2007-05-20'),
(1, 2, 1, '2007-05-20'),
(1, 3, 1, '2007-05-20'),
(2, 1, 2, '2007-05-21');

http://q.hatena.ne.jp/1179616967

id:jayz

詳しく回答ありがとうございます

ずばりです

2007/05/20 09:37:01

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません