人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

MySQL,Perlの詳しい方、お願いします。

人マスターと、商品マスターと、持ち物マスターがあり、
誰がどの商品を持っているかを管理したいと思います。

HITOMASTER
------+--------
HITOCD|HITONAME
------+--------
1|A
2|B
------+--------
以下、レコード数は不定

SHOUHINMASTER
---------+-----------
SHOUHINCD|SHOUHINNAME
---------+-----------
1|パソコン
2|テレビ
3|車
---------+-----------
以下、レコード数は不定


MOCHIMONOMASTER
------+---------
HITOCD|SHOUHINCD
------+---------
1|1
1|3
2|1
2|2
2|3
------+---------
以下、レコード数は不定


これを、以下のように表示したいのですが、

----+------------
名前|持ってるもの
----+------------
A |パソコン、車
----+------------
B |パソコン、テレビ、車
----+------------

どのようなプログラム、SQL文を書くとよいでしょうか。

1行表示するごとに、その行の人が持っているものを一回ずつ絞り込んでいくというのは考えてみたのですが、
もっとスマートなやり方がありますでしょうか?

なお、すべてのテーブルの件数は不定です。

●質問者: bonyan
●カテゴリ:コンピュータ
✍キーワード:MySQL Perl SQL いるか スター
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● Mook
●100ポイント ベストアンサー

下記のような感じでどうでしょうか。


SELECT hitoname, GROUP_CONCAT( shohinname ) AS mochimono_list
FROM mochimonomaster
INNER JOIN hitomaster ON mochimonomaster.hitocd = hitomaster.hitocd
INNER JOIN shouhinmaster ON mochimonomaster.shouhincd = shouhinmaster.shouhincd
GROUP BY hitoname

実行結果は bonyan さんが例示されたようになると思います。

◎質問者からの返答

ありがとうございます。

SELECT hitoname, GROUP_CONCAT( shouhinmei ) AS mochimono_list

FROM mochimonomaster

INNER JOIN hitomaster ON mochimonomaster.hitocd = hitomaster.hitocd

INNER JOIN shouhinmaster ON mochimonomaster.shouhincd = shouhinmaster.shouhincd

GROUP BY hitoname

でばっちり希望する形が取得できました。これから内容を確認させていただきます。

ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ