gpt4 book ai didi

php - MySQL(和 PHP)单个查询、单个表、多个限定符

转载 作者:行者123 更新时间:2023-11-30 23:39:45 27 4
gpt4 key购买 nike

这是我的第一个问题,所以我尽量说清楚(希望不要太长!)

我正在使用 MySQL 和 PHP 来尝试比较来自 MySQL 销售数据表的 php 表中的数据,其结构大致如下(数据代表在许多地点购买和销售的多种产品)。

price
quantity
type
buyflag
location

'buyflag' 是 bool 值,表示记录的价格是否是商品的买卖价格,其中 buyflag=true 是商品的购买价格,buyflag=false 表示商品的价格售价。

我想要一个查询结果,当商品在第一个位置购买并在第二个位置销售时,按每种产品类型比较两个位置。换句话说,看起来像这样:

type |  quantity  |  'buyprice'  |  'sellprice'

其中“buyprice”是它在位置 1 的购买价格,“sellprice”是它在位置 2 的出售价格。

经过一些研究后,我已经能够使用连接和子查询来显示其他结果,但在这种情况下,当数据全部在一个表中但似乎需要两个 WHERE 语句来挖掘它。

select type, quantity, max(price) as buyprice
from marketfile
where (buyflag=true and location=102)
group by type;

将获取前 3 列,或者

select type, quantity, min(price) as sellprice
from marketfile
where (buyflag=false and location=75)
group by type;

将获取第一、第二和第四列,但我不知道如何在一个查询中获取所有内容。

到目前为止,我相当糟糕的子查询工作(失败)是:

select type, quantity, min(price) as buyprice,
(select max(price) from marketfile where (buyflag=false and location=75)) as sellprice
from marketfile
where (buyflag=true and location=102)
group by type;

我希望在单个查询中使用它的原因是,然后使用 PHP 将查询显示为表格,这样我就可以查看在位置 1 购买和在位置 2 出售的数百件商品的列表,然后查看按产品划分的这条特定路线的利润率。

我很想解决我的 MySQL 不足之处,方法是使用上面的两个单独的查询并将它们转储到一个新表中,然后重新查询该表。如果我随后想处理许多位置并因此以指数方式增加路由数量(因此要使用的表),则此解决方法似乎不是特别优雅。

在此先感谢您的帮助。

最佳答案

如果我没理解错的话,您想要将表 marketfile 中的两行合并为一个输出行。为此,您必须将表自身连接起来。您可以通过将它两次放入 FROM 子句并为其指定别名来实现:

SELECT a.type, …
FROM marketfile as a, marketfile as b
WHERE (a.type = b.type) AND (a.location = 102) AND (b.location = 75) AND …

确保将所有必要的连接条件放入 WHERE 子句中以仅选择相应的记录。否则查询将永远持续下去并返回太多结果。

关于php - MySQL(和 PHP)单个查询、单个表、多个限定符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4394434/

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