我正在嘗試「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支持透視查詢,那很好。但它不,所以你去了。 –