我正在尝试“PHP登录&用户管理”插件,该插件允许用户配置文件中的自定义字段。
然而,由于某种原因,这是在一个单独的表上实现的,所以为了拉起“电话号码”例如,我必须从login_users获取我的user_id,进入login_profile_fields表,找到正确的行,拉id和标签,并找到login_profiles中的行,其中id=pfield_id
和user_id = user_id
。PHP/MySQL:如何查询行数据信息作为列数据?
我试图写一个SQL查询,显示最终的以下信息:
名称|电子邮件|电话号码|邮政编码|部门|技能|经理电子邮件|公司代码|状态
其中login_profiles选定值为X (例如:“请列出谁拥有的状态代码为1的所有用户的上述信息”)
有我的方式做到这一点?
另外,有没有一种方法,我可以自动填充login_profiles表中的值,来自login_profiles的值,像这样?
login_profiles
p_id | pfield_id | user_id | profile_value | Phone Number | Zip Code | ...
1 | 1 | 1 | 18005551212 | {Select profile_value from login_profiles where user_id=user_id and pfield_id=1} | {Select profile_value from login_profiles where user_id=user_id and pfield_id=2} | ...
这里是我当前的表:
login_profile_fields
id | section | type | label |
1 | User Info | text_input | Phone Number |
2 | User Info | text_input | Zip Code |
3 | Work Info | text_input | Department |
4 | Work Info | text_input | Skills |
5 | Work Info | text_input | Manager Email |
6 | Work Info | text_input | Company Code |
7 | Work Info | checkbox | Status |
login_profiles
p_id | pfield_id | user_id | profile_value |
1 | 1 | 1 | 18005551212 |
2 | 2 | 1 | 90210 |
3 | 3 | 1 | Marketing |
4 | 4 | 1 | Segmentations and surveys |
5 | 5 | 1 | [email protected] |
6 | 6 | 1 | COMP1 |
7 | 7 | 1 | 1 |
1 | 1 | 2 | 18007771234 |
2 | 2 | 2 | 90218 |
3 | 3 | 2 | CEO |
4 | 4 | 2 | Business strategy |
5 | 5 | 2 | [email protected] |
6 | 6 | 2 | COMP1 |
7 | 7 | 2 | 1 |
login_users
user_id| name | email |
1 | Michael Bluth | [email protected] |
2 | George Bluth | [email protected] |
我不是一个MYSQL的人通过培训,但我正在学习所有我可以,所以任何意见非常感谢!
你不想这样做。做一个正常的查询,然后在代码中进行列转换。在获取数据时,客户端只需要一行代码就可以这样做了。在查询中动态地执行一些隐含的sql。 –
@MarcB - 我非常不同意 - 数据透视表是一个非常普遍的需求,并且不需要大量的SQL,正如下面的bluefeet的答案所证明的那样。 –
是的,如果mysql支持透视查询,那很好。但它不,所以你去了。 –