1

次のように設定された MYSQL データベースがあります: user varchar(50)。type1 int(50)。type2 int(50)。http://example.com/main.php/?user=exampleを実行できる php スクリプトを作成したいと思います。ページには、1 に等しいすべての整数の名前を示すリストが表示されます。

別のphpファイルからさらに行が追加されるため、行の量を判断できません。私が言えることは、行 1 は user と呼ばれ、varchar になるということだけです。整数である他のすべての行のデフォルト値は 0 です。

ありがとう

4

1 に答える 1

0

質問は非常に不明確ですが、あなたが言っているのは、このようなデータベーステーブルがあるということだと思います

  user  varchar2(50)
  type1 int(50)
  type2 int(50) 

このようないくつかのデータを使用します(申し訳ありませんが、ミッキーマウスの例です:)

  user          type1       type2     type3
  -----------------------------------------
  mickey            0           1         0
  donald            1           1         0
  pluto             1           1         1

ブラウザが user=donald のパラメータで Web ページを呼び出す場合、表示したい

  type1
  type2

そうですか?

少し奇妙に思えますが、この場合は、select ステートメントを使用できるように、型を保持する列が必要な可能性が高くなります。

  user           type
  -----------------------
  mickey            type2
  donald            type1
  donald            type2
  pluto             type1
  pluto             type2
  pluto             type3

次に、ユーザーに属するすべてのタイプを取得するには、次のような SQL 選択を使用します。

  SELECT type from <table> where user='mickey';

戻るだろう

  type
  --------
  type2 

ただし、非正規化では、ユーザー テーブル、タイプ テーブル、および user_type テーブルを使用してスペースを節約します。

  user

  id       name
  --------------------
  1        Mickey
  2        Donald
  3        Pluto

  type

  id       type
  --------------------
  1        type 1
  2        type 2
  3        type 3

  user_type

  user_id     type_id
  --------------------      
  1            2
  2            1
  2            2
  3            1
  3            2
  3            3 

そして、私たちの選択は

 SELECT type FROM user as u, user_type as ut, type as t 
 where u.id=ut.user_id
   and ut.type_id=t.id
   and u.name='Mickey' 

これにより、そのタイプ/ユーザーの組み合わせの値が実際に存在するデータのみが保存されます。次に、選択を実行して必要なデータを取得するために、この選択をphpに埋め込む必要があります。

于 2012-07-31T13:50:54.460 に答える