Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在MySQL中对多个表中的产品价格进行排序_Php_Mysql_Sorting - Fatal编程技术网

Php 在MySQL中对多个表中的产品价格进行排序

Php 在MySQL中对多个表中的产品价格进行排序,php,mysql,sorting,Php,Mysql,Sorting,从多个表中排序MYSQL结果的方法是什么 我有两张桌子。第一: “存储产品”表: 在这里我放置了产品名称。其他表格包含不同产品变体的价格: “门店产品”表: 我需要创建一个基于价格的排序(最低和最高),它只使用第一个变量-按“store_products_variants”表中的“ordering”列排序 根据上述示例,结果应为: +---+------------+---------------+ | 1 | Product 2 | (price 09.00) | | 3 | Product

从多个表中排序MYSQL结果的方法是什么

我有两张桌子。第一:

“存储产品”表:

在这里我放置了产品名称。其他表格包含不同产品变体的价格:

“门店产品”表:

我需要创建一个基于价格的排序(最低和最高),它只使用第一个变量-按“store_products_variants”表中的“ordering”列排序

根据上述示例,结果应为:

+---+------------+---------------+
| 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];