1

我有 2 个表,一个是 field_id,另一个是 field_value。我想按行显示个人资料内容,名字,姓氏,年龄,爱好,关于我。

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

field_value --here id pmkey auto increment and field_id 在 up table 中提到

------------------------------------------------------------------
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

演示

但是,我建议您更改数据库结构并使其如下所示。

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 中,我们已经定义了 hobbies 并编写了新的 hobby,然后它将首先添加到hobbies表中,然后添加到hobbies_person表中。

有关更多详细信息,请参阅新数据库结构

于 2012-06-19T09:11:58.240 回答