1

ここに、プルしたい 5 つのテーブルのデータがあります。

表 1usersには 3 つの列があります。

uid, username, data

表 2users_orderには 3 つの列があります。

uid, orders_id, users_email

表 3order_productsには 3 つの列があります。

orders_id, product_id, product_name

表 4 のユーザー プロファイル値には 3 つの列があります (以下は行のデータです)

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 のデータ Firstname と Last Name をクエリ結果に取り込みたいと思います。したがって、最終的なクエリは次のようになります

uid    username    orderId     usersEmail    productName    FirstName    LastName

表 4 のデータを追加したクエリのヘルプが必要です。

4

1 に答える 1

1

これを試して:

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ユーザー プロファイル テーブルの各エントリには、 と を示す 2 つの値fid1、2があると仮定します。firstnamelastname

于 2012-12-18T01:37:04.410 に答える