gpt4 book ai didi

php - 如果 TYPO3 扩展中为空,则按特定字段和另一个字段排序

转载 作者:行者123 更新时间:2023-11-29 14:31:34 24 4
gpt4 key购买 nike

我遇到了一个我无法解决的问题。我正在制作产品的价格列表,其中从三列(price1,price2,price3)获取价格,其中每个价格列都针对该产品的特定版本。

某些产品可能没有价格 1 的价格,因为该版本中不存在该价格,而少数产品仅在价格 3 中具有价格。

我可以得到一个 ORDER BY 来列出按价格订购的产品,因此,如果价格 3 中仅包含价格 5400 的产品将列在价格 1 中价格为 5300 的产品之后。

如果我按价格1订购,则价格1中没有价格的产品将列在顶部。

我正在使用 TYPO3 扩展覆盖,其中 SQL 语句是

tx_overlays::getAllRecordsForTable('*', 'tx_rtmur_bricks', $where, '', 'price1 ASC');

where后面的''是GROUP BY

编辑:

现在是这样列出的:

Product 472
Price pr 1000 pcs: 7.730 in version 3

Product 201
Price pr 1000 pcs: 5.690 in version 1
Price pr 1000 pcs: 7.315 in version 2

Product 301
Price pr 1000 pcs: 5.690 in version 1
Price pr 1000 pcs: 7.315 in version 2

Product 309
Price pr 1000 pcs: 6.760 in version 1
Price pr 1000 pcs: 7.350 in version 3

我希望它以这种方式排序:

Product 201
Price pr 1000 pcs: 5.690 in version 1
Price pr 1000 pcs: 7.315 in version 2

Product 301
Price pr 1000 pcs: 5.690 in version 1
Price pr 1000 pcs: 7.315 in version 2

Product 309
Price pr 1000 pcs: 6.760 in version 1
Price pr 1000 pcs: 7.350 in version 3

Product 472
Price pr 1000 pcs: 7.730 in version 3

最佳答案

好的,这是给您的另一个答案。我仍然推荐前一种,重构你的代码和数据库将需要一些工作,但这并不是不可能的。您的数据库的升级脚本应该相当简单,因此您可以保留所有数据..

无论如何,这里有一个解决方案。同样,您必须翻译字段名称,因为我使用自己的测试集构建了它:

select * from 
(select id as id, "version 1" as version , price1 as price from tx_rtmur_bricks
where price1 is not null
union
select id, "version 2", price2 from tx_rtmur_bricks where price2 is not null
union
select id, "version 3", price3 from tx_rtmur_bricks where price3 is not null
) p
group by p.id, p.price asc;

所以你会发现它变得多么复杂......

您可能需要按参数调整组并向选择添加一些列才能得到您想要的结果。

编辑:结果应该类似于:

Product, Version, Price
123, "Version 1", 5.50
123, "Version 3", 7.50
134, "Version 1", 5.50
134, "Version 2", 6,50
154, "Version 3", 8,50
etc

关于php - 如果 TYPO3 扩展中为空,则按特定字段和另一个字段排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9920993/

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