用户
+--------+--------------+----------+--------------+
| userID | userUsername | userName | userLastName |
+--------+--------------+----------+--------------+
| 6 | richard | Ricardo | Vega |
| 10 | jason | Jason | Bourne |
+--------+--------------+----------+--------------+
补充库存
+-----------+-------------+--------+--------+-----------------+
| restockID | restockDate | itemID | userID | restockQuantity |
+-----------+-------------+--------+--------+-----------------+
| 1 | 2012-02-29 | 1 | 6 | 48 |
| 2 | 2012-02-29 | 1 | 10 | 100 |
| 3 | 2012-02-29 | 2 | 10 | 50 |
| 4 | 2012-02-29 | 2 | 6 | 100 |
| 5 | 2012-02-29 | 2 | 6 | 200 |
| 6 | 2012-02-29 | 2 | 10 | 2000 |
| 7 | 2012-02-29 | 1 | 10 | 2000 |
+-----------+-------------+--------+--------+-----------------+
项目
+--------+--------------------+
| itemID | itemName |
+--------+--------------------+
| 1 | Coca Cola (lata) |
| 2 | Cerveza Sol (lata) |
+--------+--------------------+
好的,伙计们,我已经按要求提供了一些样本数据我需要这张桌子:
+--------+--------------------+---------------+-------------+----------+--------------+--------------+
| itemID | itemName | itemExistence | restockDate | userName | userLastName | userUsername |
+--------+--------------------+---------------+-------------+----------+--------------+--------------+
| 2 | Cerveza Sol (lata) | 2350 | 2012-02-29 | Jason | Bourne | jason |
| 1 | Coca Cola (lata) | 2148 | 2012-02-29 | Ricardo | Vega | richard |
+--------+--------------------+---------------+-------------+----------+--------------+--------------+
但是,我需要重新进货日期是每个商品名的最新日期。在这个例子中,它显示了第一次补货,而不是最新的一次。我只需要展示这个项目的存在和上次被重新储备的时间,而不是第一次。
如果我的表不好,请建议一个新的模式。
我知道这可能是很多,所以我会小费5美元(贝宝)的一个如何能帮助我。答应我。
最佳答案
如注释中所述,许多补货可以在同一天执行,因此在这种情况下不可能比较日期。这里提供了两个选项:使用restocks
表中的增量PK或重新构造表。对于第一种情况,这是解决方案:
select i.itemID, i.itemName, i.itemExistence, r.restockDate, u.userName,
u.userLastName, u.userUsername
from items i
left join (
select r1.restockDate, r1.itemID, r1.userID from restocks r1
left join restocks r2
on r1.itemId = r2.itemId and r1.restockId < r2.restockId
where r2.restockDate is null
) as r on i.itemID = r.itemID
inner join users u on r.userID = u.userID
对于第二种情况,重构意味着将日期字段更改为唯一标识记录的唯一日期时间。不过,这是最好的解决方案,它也需要更新表中以前的任何数据。这意味着,要更新具有相同日期的所有记录,以便对单个产品重新进货,并为它们设置不同的日期时间。
懒惰的人(像我一样)会选择第一个选项:)如果你对此有任何疑问,请告诉我。
关于mysql - 什么查询在MySQL上获得以下内容?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9493785/