[英]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;
這將為您提供:
| UID | USERNAME | ORDERID | USEREMAIL | PRODUCTNAME | FIRST NAME | LAST NAME |
-------------------------------------------------------------------------------------
| 1 | xxusername | 123 | xxxuser@gmail | product 1 | sam | lin |
假設用戶配置文件表中的每個values
條目都有兩個fid
值1、2,分別表示firstname
和lastname
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.