【发布时间】:2011-12-04 05:35:37
【问题描述】:
考虑以下 MySQL 表:
APPLICATIONS(包含所有用户的所有应用程序)
unique_id | user_id | date_of_application | date_ended | status
----------------------------------------------------------------------------
1 user_a 2010-09-09 2010-12-24 Ended
2 user_a 2011-03-03 2011-06-06 Ended
3 user_a 2011-08-08 2011-10-10 Ended
4 user_b 2011-10-01 Active
*ITEM_TRANSACTIONS*(包含所有用户的所有物品交易)
user_id | item_id | quantity_ordered | date_requested | date_received
----------------------------------------------------------------------------
user_a item_a 20 2011-10-01 2011-10-02
user_a item_b 10 2011-10-01 2011-10-02
user_b item_a 30 2011-10-05 2011-10-10
user_b item_b 30 2011-10-05 2011-10-10
物品
item_id | item_name | item_price
------------------------------------
item_a Item AA 500
item_b Item BB 1000
到目前为止,我有以下查询已经获取了项目价格值的总和每个用户不同。
但是,除此之外,我还需要 SELECT 仅涵盖(计算总和)其用户状态为 Ended 的那些 item transactions 并且应用程序是最新的应用程序。
重申一下,applications 和 item_transactions 表将包含同一用户随时间推移的多条记录,应涵盖(选择)的是最新应用程序下的那些事务(状态已结束)。
SELECT
item_po.poid,
SUM(item_transactions.quantity_ordered) AS qtysum,
item_transactions.item_id,
item_transactions.quantity_ordered,
items.item_id,
items.item_price,
applications.user_id,
applications.status
FROM
items
WHERE
applications.status='Ended'
GROUP BY
item_transactions.user_id
【问题讨论】:
-
+1 表示示例格式。但是您没有告诉我们您查询的一般目的。你能用日常语言描述它的用途和结果吗?
-
能否告诉我您想要的预期结果。
-
@ErwinBrandstetter 嗯,我该怎么说......也许这就像说我想根据提供的日期参数(在我的例子中是 date_of_application 和 date_ended)计算给定公司的销售额。还要考虑到只应考虑最新的应用程序。在我的情况下, user_b 不在等式中,因为他的状态目前是活动的。呃,我希望能说清楚=P
-
@Arif 我虽然得到了覆盖 =P 无论如何,根据上面的表格,我想做的应该给我:(价格总和和数量总和所有项目)由(其应用程序状态为“已结束”的用户)和(那些 item_transactions 发生在该特定应用程序范围内) .我已经使用发布的查询介绍了第一个。此外(我们应该只计算同一个 raiser 的最新/最后一个应用程序)
-
你好,** item_po.poid **在哪里?你这里没有详细的** item_po **表...请解释一下。
标签: php mysql sql join phpmyadmin