• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:データ振分け)

データ振分けについてのSQL文

このQ&Aのポイント
  • データ振分けについてのSQL文を考える際、大カテゴリと小カテゴリの関連性を考慮しながらデータを取得する必要があります。PHPで記述する場合、以下のような手順を踏むことで目的のデータを取得することができます。
  • まず、データベースから大カテゴリのデータを取得し、それぞれの大カテゴリに対して関連する小カテゴリのデータを取得します。具体的には、大カテゴリのtypeと小カテゴリのtypeの4桁目が一致するデータを抽出します。
  • 取得したデータを適切な形式で表示することで、望む振り分け形式を実現することができます。また、MySQL4とMySQL5の両方で動作するSQL文を作成することで、共通のデータベース環境で問題なく利用できるようになります。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

きちんと検証できていませんが、こんな感じでやってみては $sql=<<<eof select big.name as bigname,small.name as smallname from big inner join small on big.id=small.id order by big.id,small category_no eof; $res=mysql_query($sql); $bigname=""; print "<dl>\n"; while($row = mysql_fetch_array($res,MYSQL_ASSOC)){ if($bigname!=$row["bigname"]){ print "<dt>{$row["bigname"]}\n"; } print "<dd>{$row["smallname"]}\n"; $bigname=$row["bigname"]; } print "</dl>\n";

a4_chapp
質問者

お礼

yambejp様 お世話になっております。 出来ました!SQLだけでなく、出力方法までアドバイスいただき、 大きなヒントを得たようです。ありがとうございました!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.4

大分類、小分類と言う2個のクエリから得られるデータを 縦に並べれば良いようです。 (1)大分類 SELECT type AS dai,0 AS sho,name  FROM hoge WHERE type<10 (2)小分類 SELECT FLOOR(type/1000) AS dai,MOD(type,1000) AS sho,name  FROM hoge WHERE type>=1000 これを繋げましょう。 SELECT type AS dai,0 AS sho,name  FROM hoge WHERE type<10 UNION ALL SELECT FLOOR(type/1000) AS dai,MOD(type,1000) AS sho,name  FROM hoge WHERE type>=1000 ORDER BY dai,sho

全文を見る
すると、全ての回答が全文表示されます。
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

DBの構造がよくないですね。 もし命題がただしいなら大カテゴリは最大10個(0を抜かせば9個) しか登録できませんがよろしいのですか? また、リレーションする条件も不明確で、このままやっても パフォーマンスがでにくい構造ですし、高い確率で破たんすると 思いますよ 正規化についていちどしっかり学習なさるとよいかと思います

a4_chapp
質問者

お礼

yambejp様 ご親切な対応をありがとうございます。 >もし命題がただしいなら大カテゴリは最大10個(0を抜かせば9個) >しか登録できませんがよろしいのですか? ご指摘の通りです!そこまで考慮できていませんでした。(お恥ずかしい) で、改めて構造を考えてみたのですが、以下のような構造では如何でしょうか?アドバイス頂けると幸いです。 id   name 1   データベース 2   パソコン 3   車 ※idで紐付けている。 no id category_no name 1  1  1001    MySQL 2  1  1002    PostgreSQL 3  1  1003    Oracle 4  2  2001    富士通 5  2  2002    NEC 6  3  3001    トヨタ 7  3  3002    日産 8  3  3003    ホンダ

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

type列のデータ型は、何ですか? >ローカル上ではMySQL4を使って MySQL4といった表記はやめ、もっと具体的に提示してください。 MySQL 4.0までと4.1以降では、サブクエリの使用可否など機能がまったく異なります。

a4_chapp
質問者

補足

chukenkenkou様 こんにちは。早速の対応をありがとうございます。 データ型はvarcharで、MySQLのローカルのバージョンは4.1、ウェブサーバー側のバージョンは5.1です。 すみません。情報不足でした。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Oracleの欠点

    データベースには主に、 MySQL、PostgreSQL、Oracleが 使われていると言う事を知ったのですが、 MySQL、PostgreSQLは無料なのに対して、 Oracleは有料ですよね。 その分、高機能だという予想をつけていますが、 Oracleの欠点はなんですか? Oracleにできなくて、MySQL、PostgreSQLにできることとか・・・ あと、Oracleは速いですか? MySQLは速いらしいですが、Oracleはそれに比べたらどうなのでしょうか?

  • データタイプについて

    ほとんどMySQLしか使った事がなく、PostgreSQLのデータタイプに不明なものが多いです。 参考書も持っているのですが、それらの説明がありません。 PostgreSQLのデータタイプについて説明があるサイトなどありませんでしょうか? 自分で探してもいいサイトが見つかりません・・・。

  • MySQLにデータを登録した後、すぐ直前のデータを読み込む方法は?

    お世話になっております。 PHPでデータベースを作成しています。 同じページの中にデータをデータベースへ登録し、すぐ直後にauto_incrementの値を読み込み、変数にセットしたいのですが、うーーーん・・・ってな具合です。。 データは何でもいいのですが、主キーはauto_incrementにしています。(例:現在、100件データを入れている状態で、新規にデータを登録します。ID(主キー)は101になります。そのデータを登録した直後にこのIDの値101を取り出したいのです。) すみませんが、よろしくお願いいたします!!

    • ベストアンサー
    • MySQL
  • DBサーバーはどれがいいのですか?

    MySQL、PostgreSQL、SQLサーバー、ORACLEデータベースについて 仮に、ユーザが5000万人のSNSを作った場合、MySQLやPostgreSQLで対応できますか? 検索に時間がかかったりするのでしょうか? その場合、DBをORACLEにしたほうがいいのでしょうか? ■費用について もし、DBサーバーを1台設置して、ORACLEにした場合、初期費用や毎月のコストはどのくらいになるのでしょうか? ORACLE対応のDBサーバーの金額等も教えて頂ければ幸いです。 あと、SNSの会員が10万人までだとしたら、 MySQL、PostgreSQL、SQLサーバー、ORACLEのうちだと、どれがコスト的に一番効率的でしょうか?

  • マツダ(自動車の会社)のイメージについて。

    こんにちは。 題名の通り、自動車会社のマツダという会社のイメージについて みなさんの意見を聞かせてください。 車好きの人ではなく、一般の方(言い方が難しいのですが) の意見が聞きたいため、車のカテゴリーではなく、 こちらのカテゴリーに書かせて頂きました。 自分は今年26歳になる♂です。 マツダ社のデミオという車に乗っています。 今の新しい形ではなく、一世代前のモデルです。 この車を買う時に、父(50代半ば)にかなり反対されました。 マニュアル車であり、マフラーやホイールなどかなりハードに 弄ってあったこともありますが、 「車でマツダなんてあり得ない」 「車はトヨタか日産。百歩譲ってホンダ」 ということをかなり言われました。 今日も同じようなことを言われ、車の調子がちょっと悪いということを言ったら 「やっぱりマツダだから悪くなるんだ」 「次に車を買う時はトヨタ、日産、ホンダのどれかにしろ」 ということを強く言われました。 自分としては、次に車を買う時になったらトヨタか日産なんてあり得ません。 ホンダなら少々考えますが…。 (スポーツ系の車を少々扱っているので) 基本的にマツダ以外考えられません。 世間一般では、 「車はトヨタか日産!」という考えは普通なのでしょうか??

  • データベース間のデータ移動

    現在様々なデータベースを使用していて、プログラムか何かの方法で、 OracleからMySql等ほかのデータベースにデータを移動することは可能でしょうか。 SELECT A INTO Bではできなかったと思います。 100件くらいの名前データだけなので、いちいちCSVに変換して再ロードするのが面倒です。

  • データベースへ接続要求するためのシステムについて造詣が深い方はいらっし

    データベースへ接続要求するためのシステムについて造詣が深い方はいらっしゃいますでしょうか? OracleではLISTENERというシステムが司っていると思っています。また、Oracleに対してはそれ以外に存在していないと思っています。 たとえば別サーバのアプリケーションより「お宅のDBから情報を頂戴したいと思っているんだけど仲介してくれる?」「ほい!じゃあこの情報を持ってきな!」といったようなやりとりだと思っています。(間違っていないですか?) いろんな会社などからデータベースシステムが販売されていたりするわけですが、それぞれLISTENERのようなアーキテクチャの物はありますか?もしあれば名前を教えてください。 そもそも接続のためのシステムを総称でなんと言うのか分からないところでもありますが・・・ 知りたいサーバ: Oracle Database オラクル DB2 IBM Microsoft SQL Server マイクロソフト Microsoft ACCESS マイクロソフト Symfoware Server 富士通 HiRDB 日立製作所 HiRDB on XDM (XDM/RD) 日立製作所 RIQS? V2 日本電気 (NEC) Teradata テラデータ MySQL MySQL AB PostgreSQL PostgreSQL Global Development Group Firebird Firebirdプロジェクト SQLite D. Richard Hipp

  • 一部のレコードをバックアップ・リストアしたい。

    PostgreSQLでデータベースのバックアップは pg_dumpで良いのですが、特定テーブルの一部のレコードを抽出したデータをMySQLに移したいのですが、どのようにすれば良いのでしょうか? Postgresqlは Linuxで7.2.3 MySQLは WindowsXPで 5.0.11 です。

  • MysqlまたはPostgreSQLで、データをデータベースから読み取

    MysqlまたはPostgreSQLで、データをデータベースから読み取り、コピーして書き込み可能にするような操作がありましたら教えてください。 一例として、外部・内部結合で取得したデータをコピーして書き込み可能にするようなイメージです。 このようなことは実行可能でしょうか?また似たような操作が存在しますでしょうか? よろしくお願いします。

  • Cでデータベース操作

    C言語で、SQLを実行させるサンプルソースを探しています。 スピードと次のようなデータベースにアクセスできるものが良いです。 SQL Server2005 DB2 MySQL PostgreSQL Oracle よい本もあるのでしたら、ご紹介お願いいたします。