行显示配置文件内容

时间:2012-06-19 07:00:01

标签: mysql

我有2个表,一个是field_id,另一个是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.

请帮帮我。并建议我使用或不使用这种类型的数据库。

1 个答案:

答案 0 :(得分: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

Demo

但是 ,我建议您更改数据库结构并按如下所示进行操作。

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_person 表中。

有关详细信息,请参阅New Database Structure