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