Php 在MySQL中对多个表中的产品价格进行排序
从多个表中排序MYSQL结果的方法是什么 我有两张桌子。第一: “存储产品”表: 在这里我放置了产品名称。其他表格包含不同产品变体的价格: “门店产品”表: 我需要创建一个基于价格的排序(最低和最高),它只使用第一个变量-按“store_products_variants”表中的“ordering”列排序 根据上述示例,结果应为:Php 在MySQL中对多个表中的产品价格进行排序,php,mysql,sorting,Php,Mysql,Sorting,从多个表中排序MYSQL结果的方法是什么 我有两张桌子。第一: “存储产品”表: 在这里我放置了产品名称。其他表格包含不同产品变体的价格: “门店产品”表: 我需要创建一个基于价格的排序(最低和最高),它只使用第一个变量-按“store_products_variants”表中的“ordering”列排序 根据上述示例,结果应为: +---+------------+---------------+ | 1 | Product 2 | (price 09.00) | | 3 | Product
+---+------------+---------------+
| 1 | Product 2 | (price 09.00) |
| 3 | Product 3 | (price 15.00) |
| 2 | Product 1 | (price 56.00) |
+---+------------+---------------+
这在MySQL中可能吗?是的,这是可能的。尝试使用JOIN命令,并在每个表的ID上进行JOIN。使用
排序列将正确的变体连接到产品上
如果正确的排序
值始终为1,则这将是一个查询
SELECT
products.name,
variants.price_sale
FROM store_products AS products
INNER JOIN store_products_variants AS variants
ON variants.product_id = products.id
AND variants.ordering = 1
ORDER BY variants.price_sale ASC
此查询将首先查找产品的最低订购值。然后将其加入结果的价格中:
SELECT
products.name,
variants.price_sale
FROM
store_products AS products
INNER JOIN (
SELECT
product_id,
MIN(ordering) AS ordering
FROM
store_products_variants
GROUP BY
product_id
) AS variantOrdering
ON variantOrdering.product_id = products.id
INNER JOIN store_products_variants AS variants
ON variants.product_id = variantOrdering.product_id
AND variants.ordering = variantOrdering.ordering
ORDER BY
variants.price_sale ASC
您好,这是可能的,请使用此查询
SELECT p.id,p.name,spv.price_sale
from products p
INNER JOIN store_products_variants spv ON spv.product_id = p.id
where spv.ordering = 1
group by p.id
order by spv.price_sale asc
我认为它会给出您想要的结果您可以通过使用JOIN
来实现。我试着选择p.name
作为名称,p.id
作为id,.v.price\u sale
作为价格,从store\u products
p左键加入store\u products\u变体
v.product\u id
=p.id
按v.订购price\u sale
ASC。但是获取所有变量结果的第一列显示的是什么?1,3,2看起来有点随机,所以排序=1。来吧试着做点什么排序列的目的是什么问题是第一个“排序”并不总是1是的,这是我们需要知道的:p所以它只是最低的排序值?应该有一些标准,否则我们将不得不猜测。几乎有效:)你知道如何以最低订购量获得唯一的产品?不客气:)。如果答案有用,你能接受/赞成吗?这是表示感谢的方式,其他人也会很快看到你的问题是否已经解决
select t.* from(
select t1.[id], t1.[name],
'(price ' + cast(max(t2.[price_sale]) as varchar(50)) + ')' as [price]
from [#store_products] t1
left join [#store_products_variants] t2
on t1.[id] = t2.[]product_id
group by t1.[id], t1.[name]
)t
Order by len(t.[price]), t.[price];
SELECT p.id,p.name,spv.price_sale
from products p
INNER JOIN store_products_variants spv ON spv.product_id = p.id
where spv.ordering = 1
group by p.id
order by spv.price_sale asc
select t.* from(
select t1.[id], t1.[name],
'(price ' + cast(max(t2.[price_sale]) as varchar(50)) + ')' as [price]
from [#store_products] t1
left join [#store_products_variants] t2
on t1.[id] = t2.[]product_id
group by t1.[id], t1.[name]
)t
Order by len(t.[price]), t.[price];