gpt4 book ai didi

MySQL 最小/最大连接表

转载 作者:行者123 更新时间:2023-11-29 08:26:08 27 4
gpt4 key购买 nike

基本上,我有一个搜索查询,它成功地获取了我需要的所有结果。我还检查所有行的计数(超出最后一个查询限制)、不同类别 ID 的计数,现在我只需要一个最小值/最大值,希望在同一个查询中。

我看到的问题是它来自连接查询,因此我需要连接、匹配每个连接的 ID,然后检查我想要的最小/最大数字。

假设我有 20 个结果,所有结果都有不同的“价格”,但价格位于另一个表中,我想从另一个表中找到最低和最高价格。我只需要最小值和最大值的一个结果,因此我不妨将其添加到我的计数查询中(因为它还必须绕过主查询的限制部分)。

对此有什么想法吗?

这里有一些额外的细节(主要查询连接)

$query->join('LEFT','#__mrsp AS m
ON (t.name = m.name AND m.mrsp =
(SELECT min(mrsp) FROM #__mrsp WHERE name = t.name))');

name 在这种情况下是一个唯一的数值,因此它的作用类似于 id。这也是 joomla 数据库语法。

我在此联接中选择最小值,因为一个 mrsp(多个供应商)可能有多个结果,因此我只需要主查询中的最低结果。为了稍微扩展我的问题,“max”需要是返回的最高“min”值,但这不太重要。

编辑:

这里有更多细节。

基本上每种产品都有 50 个供应商,我希望它们的最低价格都降至 1。

现在,如果最小连接后有 1300 个产品,则还应该附加 1300 个价格,因此我需要 1 列用于显示最低找到的价格,一列用于显示最高找到的价格。

这将导致结果显示搜索期间所有结果的最低价格以及最高价格和结果。

也就是说,如果每种产品有 50 个供应商,则价格表将有 50*1300 行。我需要 1300 - 1300 行,因此初始最小值非常适合。

这是当前查询的构建:

SELECT 
MAX(m.mrsp) max_price,
MIN(m.mrsp) min_price
FROM #__products t
LEFT JOIN #__mrsp m ON t.name = m.name
WHERE IF(t.width IS NOT NULL, IF(t.w_override, t.j_width, t.width), t.j_width) = 17
AND (t.publish_up = '0000-00-00 00:00:00' OR t.publish_up <= '2013-07-25 20:14:22')
AND (t.publish_down = '0000-00-00 00:00:00' OR t.publish_down >= '2013-07-25 20:14:22')
AND t.state = 1
ORDER BY t.id

最佳答案

您应该按产品 ID 订购并选择 MAX(价格)、MIN(价格)。如果不允许您在同一 SQL 语句中选择最小值和最大值,则可能必须执行两个单独的查询。

例如。

Select name, Max(price, Min(price) from products join 
customer on customer_fk = customer_id
order by product_id(or in your case product_name)

关于MySQL 最小/最大连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17866747/

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