gpt4 book ai didi

mysql - 多行返回相同的 ID,只需要一个

转载 作者:行者123 更新时间:2023-11-29 13:57:58 24 4
gpt4 key购买 nike

我正在尝试在一个页面上列出多个产品。我的查询返回同一产品的多个,我试图弄清楚如何通过我的查询将其限制为仅一个。

我们将称为 table_one 的第一个表的主键是 ID。第二个表有一列 ProductID,引用 table_one 上的主键。

我的查询返回了等于下面 6 的 ProductID 的倍数。我只想返回一个结果,但我仍然希望查询 table_two 上 DateReserved 中的所有数据。很确定我需要在查询中添加一件事,但我运气不佳。

我想要返回的结果如下。

ID   Productname  Quantity              Image       Date Reserved         SumQuantity

6 productOne 6 'image.jpg' 03-31-2013 3
7 productTwo 1 'product.jpg' 04-04-2013 1

这是我的第一张 table 。表一

ID   Productname  Quantity              Image

6 productOne 6 'image.jpg'
7 productTwo 1 'product.jpg'

这是我的第二张 table 。表_二

ID     ProductID       DateReserved  QuantityReserved

1 6 03-31-2013 3
2 6 04-07-2013 2
3 7 04-04-2013 1

这是我尝试使用的查询。

SELECT * 
FROM `table_one`
LEFT JOIN `table_two`
ON `table_one`.`ID` = `table_two`.`ProductID`
WHERE `table_one`.`Quantity` > 0
OR `table_two`.`DateReserved` + INTERVAL 5 DAY <= '2013-03-27'
ORDER BY ProductName

最佳答案

很抱歉发布另一个答案,但我的第一次尝试似乎不太好;)

要为每个预订只获取一个结果行,您需要以某种方式对它们进行求和。首先,我建议您明确选择想要返回结果的列,并且不要使用“*”。

我建议你尝试这样的事情:

SELECT
`table_one`.`ID`, `table_one`.`Productname`, `table_one`.`Image`, `table_one`.`Quantity`,
`table_two`.`ProductID`, SUM(`table_two`.`QuantityReserved`)
FROM
`table_one`
LEFT JOIN
`table_two` ON `table_one`.`ID` = `table_two`.`ProductID`
WHERE
`table_one`.`Quantity` > 0
OR `table_two`.`DateReserved` + INTERVAL 5 DAY <= '2013-03-27'
GROUP BY `table_two`.`ProductID`
ORDER BY ProductName

正如您所见,我使用“SUM”来获取组合数量,这称为聚合,“GROUP BY”可帮助您消除同一 ProductID 的多次出现。

您现在遇到的一个问题是您必须从单独的查询中获取预订日期(至少我现在不确定如何将其放入同一查询中)

关于mysql - 多行返回相同的 ID,只需要一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15527682/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com