[英]SQL Query based on value of a different row
我正在嘗試從多個表中查詢數據,但似乎無法實現這種JOIN類型。 例如,我有一個包含產品的表,以及一個包含各種用戶元數據的wp_usermeta表:
產品表
Serial # Product
---------------------
0001 A
0002 B
0003 C
wp_usermeta(簡體)
User ID Key Value
--------------------------------
1 Serials 0001
1 Company Company A
2 Serials 0001
2 Company Company B
3 Serials 0001
3 Company Company C
我需要根據他們擁有的序列號獲得公司名稱,例如:
Serial # Company
-------------------------
0001 Company A
0002 Company B
0003 Company C
我已經能夠通過簡單的連接查詢基於序列號檢索用戶ID,但是我不知道從那里去哪里。
SELECT products.serial_number, wp_usermeta.user_id FROM products LEFT JOIN wp_usermeta ON products.serial_number = wp_usermeta.meta_value
我不確定products
表與您需要的結果有什么關系。
一種方法是“簡單”自連接:
SELECT p.value as serial_number, c.value as Company.user_id
FROM wp_usermeta p JOIN
wp_usermeta c
ON p.user = c.user AND
p.key = 'Serials' AND
c.key = 'Company';
您需要像這樣在wp_usermeta上進行2次加入:
SELECT Products.Serial, w2.Value AS Company
FROM Products
# Detect User Id by serial number
JOIN wp_usermeta w1 ON w1.Key = 'Serials'
AND w1.Value = Products.Serial
# And select company by detected User Id
JOIN wp_usermeta w2 ON w2.Key = 'Company'
AND w2.User = w1.User
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.