改善我的查询

时间:2012-12-31 08:47:26

标签: mysql select join

我确定有一种方法可以从enswitch_mobile_users中提取数据,然后再将其拉入

  

Enswitch_User_ID,Os_Version,Phone_Type

那么我该如何改进和改进这个查询?

$sql = "SELECT Substring(purchase.`date`,12,8)               AS `Time`, 
                  purchase.`item`                                    AS `Package`,
                  Cast(Substring(purchase.`item`, 12) AS UNSIGNED)   AS `Credit`,
                  purchase.`user`                                    AS `Mobile_User_ID`,

                  (SELECT user_id FROM enswitch_mobile_users WHERE `Mobile_User_ID` = enswitch_mobile_users.`id`) AS `Enswitch_User_ID`,
                  (SELECT os_version FROM enswitch_mobile_users WHERE `Mobile_User_ID` = enswitch_mobile_users.`id`) AS `Os_Version`,
                  (SELECT phone_type FROM enswitch_mobile_users WHERE `Mobile_User_ID` = enswitch_mobile_users.`id`) AS `Phone_Type`,

                  (SELECT enswitch_id FROM enswitch_users WHERE `Enswitch_User_ID` = enswitch_users.`id`)  AS `Enswitch_ID`

                        FROM   (SELECT item, date, user
                                    FROM enswitch_android_purchases 
                                    UNION 
                                    SELECT item, date, user
                                    FROM enswitch_iphone_purchases) AS `purchase` 
                        WHERE Substring(purchase.`date`,1,10) = :date
                ORDER  BY `Time` DESC";

1 个答案:

答案 0 :(得分:2)

试试这个:

SELECT SUBSTRING(p.date,12,8) AS TIME, p.item AS Package, COUNT(1) AS Sales, 
       CAST(SUBSTRING(p.item, 12) AS UNSIGNED) AS Credit, p.user AS Mobile_User_ID, 
       e.user_id Enswitch_User_ID, e.os_version Os_Version, e.phone_type Phone_Type, 
       eu.enswitch_id Enswitch_ID
FROM (SELECT item, DATE, USER FROM enswitch_android_purchases 
      UNION
      SELECT item, DATE, USER FROM enswitch_iphone_purchases) AS p 
LEFT JOIN enswitch_mobile_users e ON p.user = e.id
LEFT JOIN enswitch_users eu ON e.user_id = eu.id
WHERE SUBSTRING(p.date,1,10) := DATE
ORDER  BY TIME DESC;