簡體   English   中英

在字段內將具有查詢值的MySql表聯接

[英]Joining MySql tables with query value inside the fields

在這里,我有五個要提取的表中的數據。

表1 users具有三列:

uid, username, data

表2 users_order具有三列:

uid, orders_id, users_email

表3 order_products具有三列:

orders_id, product_id, product_name

表4用戶個人資料值具有三列(下面是該行中的數據)

uid, fid, values
1     1   firstname
1     2   lastname

因此,使用表1-3,我可以像這樣編寫查詢

SELECT users.uid AS uid, users.username AS username, 
       users_order.orders_id AS orderId,     
       users_order.users_email AS userEmail, 
       order_products.product_name AS  productName 
WHERE users_order.uid = users.uid
AND users_order.orders_id = order_products.orders_id
AND order_products.product_id = 5 ;

上面的查詢將給出結果

uid   usersname   orderId   usersEmail       productName 
1    xxusername   123       xxxuser@gmail    Product 1

我想將表4的數據名字和姓氏引入查詢結果。 因此,最終查詢將是

uid    username    orderId     usersEmail    productName    FirstName    LastName

在添加表4數據的查詢方面需要幫助。

嘗試這個:

SELECT 
  u.uid AS uid, 
  u.username AS username, 
  o.orders_id AS orderId,     
  o.users_email AS userEmail, 
  p.product_name AS  productName,
  MAX(CASE WHEN f.fid = 1 THEN `values` END) AS 'First Name',
  MAX(CASE WHEN f.fid = 2 THEN `values` END) AS 'Last Name'
FROM users u 
INNER JOIN users_order o ON o.uid = u.uid
INNER JOIN order_products p ON o.orders_id = o.orders_id
INNER JOIN usersprofile f ON u.uid = f.uid
WHERE p.product_id = 5 
GROUP BY u.uid, u.username, o.orders_id, o.users_email, p.product_name;

SQL小提琴演示

這將為您提供:

| UID |   USERNAME | ORDERID |     USEREMAIL | PRODUCTNAME | FIRST NAME | LAST NAME |
-------------------------------------------------------------------------------------
|   1 | xxusername |     123 | xxxuser@gmail |   product 1 |        sam |       lin |

假設用戶配置文件表中的每個values條目都有兩個fid值1、2,分別表示firstnamelastname

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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