簡體   English   中英

基於不同行的值的SQL查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM