【发布时间】:2018-12-06 14:35:03
【问题描述】:
我需要从三个表中提取数据,并为每个用户在一行中返回结果。我还需要根据字段的值使用可变列名。
我的查询是:
SELECT u.USER_ID, u.FIRST_NAME, d.FIELD_ID, d.DATA, f.LABEL, f.TYPE
FROM users as u, fields as f, fieldsData as d
WHERE d.USER_ID=u.USER_ID AND f.FIELD_ID=f.FIELD_ID;
我得到的结果是:
|------------|-------------|----------|-----------|---------|----------|
| USER_ID | FIRST_NAME | FIELD_ID | DATA |LABEL | TYPE |
|------------|-------------|----------|-----------|---------|----------|
| 1 | John | 1 | Cookies | Dessert | TEXT |
| 1 | John | 2 | Chocolate | Flavor | TEXT |
| 1 | John | 3 | Milky Way | Candy | TEXT |
| 2 | Sally | 1 | Brownies | Dessert | TEXT |
| 2 | Sally | 3 | Snickers | Candy | TEXT |
|------------|-------------|----------|-----------|---------|----------|
我需要的是每个用户只需要一行,其中包含字段/字段数据值的列。像这样的:
|------------|-------------|--------------|----------|---------------|---------------|------------|
| FIRST_NAME | Dessert | Dessert_TYPE | Flavor | Flavor_TYPE | Candy |Candy_TYPE |
|------------|-------------|--------------|----------|---------------|---------------|------------|
| John | Cookies | TEXT | Chocolate| TEXT | Milky Way | TEXT |
| Sally | Brownies | TEXT | NULL | NULL | Snickers | TEXT |
|------------|-------------|--------------|----------|---------------|----------------|------------|
真的可以在这方面使用一些帮助!谢谢!!
用户表:
|------------|-------------|--------------|
| USER_ID | FIRST_NAME | LAST_NAME |
|------------|-------------|--------------|
| 1 | John | Smith |
| 2 | Sally | Jones |
|------------|-------------|--------------|
字段表:
|------------|-------------|--------------|
| FIELD_ID | LABEL | TYPE |
|------------|-------------|--------------|
| 1 | Dessert | TEXT |
| 2 | Flavor | TEXT |
| 3 | Candy | TEXT |
|------------|-------------|--------------|
字段数据表:
|------------|-------------|--------------|---------------|
| DATA_ID | USER_ID | FIELD_ID | DATA |
|------------|-------------|--------------|---------------|
| 1 | 1 | 1 | Cookies |
| 2 | 1 | 2 | Chocolate |
| 3 | 1 | 3 | Milky Way |
| 4 | 2 | 1 | Brownies |
| 5 | 2 | 3 | Snickers |
|------------|-------------|--------------|---------------|
【问题讨论】:
-
您可能需要在末尾添加
GROUP BY u.first_name;; -
你有多少个字段?
-
@MKhalidJunaid 它们是用户定义的字段,因此最多可以有 20 个。