1

私は2つのテーブルを持っています。1つはfield_idで、もう1つはfield_valueです。プロファイル コンテンツを行ごとに、名、姓、年齢、趣味、自己紹介で表示したいと考えています。

field_id
-------------------------------------------------
   id   |           name           |
--------|--------------------------|-----------------
1                   First name
2                   Last name
3                   Age
4                   Hobby
5                   About me
----------------------------------------------------------

field_value --ここでは id pmkey が自動インクリメントされ、field_id は上のテーブルに記載されています

------------------------------------------------------------------
id | user_id  | field_id |   field_value                       |
---|----------|----------|--------------------------------------|----
1  | 1        |     1    |John       
2  | 1        |     1    |smith
3  | 1        |     2    |Capili
4  | 1        |     3    |32
5  | 1        |     4    |Reading Book
6  | 1        |     4    |Swimming
7  | 1        |     4    |Boating
8  | 1        |     5    |I
9  | 1        |     5    |am
10 | 1        |     5    |very
11 | 1        |     5    |simple
11 | 1        |     5    |person
-----------------------------------------------------------

このように、プロフィールのすべてのコンテンツを行ごとに表示したい

name -:john smith capili
Age-:32
Hobby-:Reading Book,Swimming,Boating
About me-:I am very simple person.

私を助けてください。このタイプのデータベースを使用するかどうかを提案してください。

4

1 に答える 1

3

少なくとも取得できるものは以下のとおりです。

John smith
Capili
32
Boating Swimming Reading Book
I am very simple person

上記の出力を取得するには、以下のクエリを使用します。

SELECT GROUP_CONCAT(field_value SEPARATOR ' ') as Profile FROM myTable
WHERE user_id = 1
GROUP BY field_id

デモ

ただし、DB構造を変更して以下のようにすることをお勧めします。

次のフィールドを持つ表personal_details 。

+++++++++++++++++++++++
+ field     +  type   +
+++++++++++++++++++++++
+ personID  + INT     +
+ firstName + varchar +
+ middleName+ varchar +
+ lastName  + varchar +
+ age       + INT     +
+ aboutMe   + varchar +
+++++++++++++++++++++++

hobbies_personテーブル

+++++++++++++++++++++++
+ field     +  type   +
+++++++++++++++++++++++
+ personID  + INT     +
+ hobbID    + INT     +
+++++++++++++++++++++++

趣味のテーブル

+++++++++++++++++++++++
+ field     +  type   +
+++++++++++++++++++++++
+ hobbID    + INT     +
+ hobbName  + varchar +
+++++++++++++++++++++++

趣味として新しいテーブルを追加しました。趣味のテーブルがない場合は、各人に趣味の名前を書き込む必要があるためです (追加のフィールドもあり、サイズも大きくなります)。hobbies_person では既に定義済みの趣味があり、person が新しい趣味を書き、最初に hobbies テーブルに追加され次にhobbies_personテーブルに追加されます。

詳細については、新しいデータベース構造を参照してください。

于 2012-06-19T09:11:58.240 に答える