注意:這不是以下形式的副本:mySQL - Create a New Table Using Data and Columns from Three Tables。這個問題是關於從多個表中獲取數據並實際創建一個包含該數據的新表。我只是想選擇已經存在的數據。關於這個問題的答案對於被問到的問題是非常具體的,並且對我沒有幫助,因爲答案中的代碼沒有解釋。所以不,這根本不是「完全相同的問題」。將來自多個行的多個MySql表的數據合併到SELECT語句的單個行中
我有一個關於加入兩個MySQL表的問題,我似乎無法找到答案。通常的連接類型似乎不是我所追求的。也許這是不可能的,我不確定。
所以我有我喜歡這首臺(簡化作示例表):
ID Name Email Phone
1 John [email protected] 000-123-4567
2 Jane [email protected] 000-890-1234
我的第二個表被安排是這樣的:
ID UserID meta_key meta_value
1 1 location_review 4
2 1 condition_review 1
3 1 price_review 5
4 2 location_review 4
5 2 condition_review 2
6 2 price_review 4
我與一些現有的軟件工作,只是做一些修改,所以理想情況下,我可以做我所需要的,而不需要改變軟件寫得太多。
我想能夠讓他們看起來像這樣加入這些表:
ID Name Email Phone location_review condition_review price_review
1 John [email protected] 000-123-4567 4 1 5
2 Jane [email protected] 000-890-1234 4 2 4
所以我需要添加從表2有用戶ID已經在表1中的數據行。
由於這是現有的軟件已經存在的地方,連接這兩個表的一些代碼,它是在這裏:
SELECT *
FROM wpnf_comments as comment
INNER JOIN wpnf_commentmeta AS meta
WHERE comment.comment_post_ID = $prop_ID
AND meta.meta_key = 'rating'
AND meta.comment_id = comment.comment_ID
AND (comment.comment_approved = 1
OR comment.user_id = $userID
)
什麼我做的是:曾經有隻有一個「等級」值,存儲在元表中。你可以看到它在上面加入它說:
AND meta.meta_key = 'rating'
但是,我想用3個單獨的評級替換。所以上面的聯合,以前只有一個評級時才工作,當我有多個評級時,它並不真正起作用。
我非常感謝任何見解,我需要做什麼來解決這個問題。如果有問題,我也使用PHP。
編輯
這是我到目前爲止的代碼。它顯示了我現在需要的所有正確的列名稱,但實際值/數據未顯示出來。它返回0行。
SELECT
*
FROM
wpnf_comments t1
INNER JOIN
(SELECT
comment_id as comment_id2,
MAX(IF(meta_key = 'location-rating', meta_value, NULL)) AS location_rating,
MAX(IF(meta_key = 'condition-rating', meta_value, NULL)) AS condition_rating,
MAX(IF(meta_key = 'maintenance-rating', meta_value, NULL)) AS maintenance_rating,
MAX(IF(meta_key = 'professionalism-rating', meta_value, NULL)) AS professionalism_rating,
MAX(IF(meta_key = 'contact-rating', meta_value, NULL)) AS contact_rating,
MAX(IF(meta_key = 'availability-rating', meta_value, NULL)) AS availability_rating,
MAX(IF(meta_key = 'responsiveness-rating', meta_value, NULL)) AS responsiveness_rating,
MAX(IF(meta_key = 'price-rating', meta_value, NULL)) AS price_rating
FROM
wpnf_commentmeta
GROUP BY comment_id) temp_t
ON t1.comment_post_ID = temp_t.comment_id2
是否有人可以幫助我嗎?我已經花了至少兩個小時,現在沒有運氣。 –
如果因爲重新發生的meta_key值而在關係數據庫上使用[normalization](https://stackoverflow.com/questions/246701/what-is-normalisation-or-normalization),那會更好。這意味着你需要第三個表格來存儲數據。能夠創建第三個表格還是僅限於這兩個表格? – MinistryofChaps
@Ministryof可能軟件將把數據放到這兩個現有的表中,除非我重新編寫了相當多的代碼。所以理想情況下,我想只使用這兩個表,否則我會不斷需要使用這兩個表中的數據更新第三個表。 –