我需要从三个表中提取数据,并将结果返回给每个用户一行。我还需要根据字段的值使用可变列名称。
我的查询是:
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 |
|------------|-------------|--------------|---------------|
答案 0 :(得分:0)
您必须进行内部联接:
SELECT u.USER_ID, u.FIRST_NAME, d.FIELD_ID, d.DATA, f.LABEL, f.TYPE
FROM fieldsData as d
INNER JOIN users as u ON d.USER_ID = u.USER_ID
INNER JOIN fields as f ON d.FIELD_ID = f.FIELD_ID;
我希望它会有用!