我正在PHP
中建立一个电子商务网站,并且有一个产品表,其中存储着3种不同的价格:
现在,我没有为3个价格制作3列,而是将这些价格存储在一个数组中并将该数组存储在SQL数据库中。
现在问题应该是我只想根据批发价来选择产品。假设
"select * from table where wholesale price = 100"
。
我该怎么做?
我还没有尝试过任何代码,因为我很困惑并且不知道该怎么做。
答案 0 :(得分:0)
SQL没有数组的概念-您可以使用逗号分隔的字符串,但是由于它只是一个字符串,因此您无法以任何方式引用各个元素。 MYSQL确实具有一些字符串处理功能,因此您可以很容易地拆分3个元素的字符串,例如
drop table if exists t;
create table t(prod int,p varchar(100));
insert into t values
(1,'10,20,30'),
(2,'40,50'),
(3,'60'),
(4,'70,80,90,100');
select prod,
substring_index(p,',',1) WholesalePrice,
substring_index(substring_index(p,',',2),',',-1) SalePrice,
substring_index(p,',',-1) RegularPrice
from t;
+------+----------------+-----------+--------------+
| prod | WholesalePrice | SalePrice | RegularPrice |
+------+----------------+-----------+--------------+
| 1 | 10 | 20 | 30 |
| 2 | 40 | 50 | 50 |
| 3 | 60 | 60 | 60 |
| 4 | 70 | 80 | 100 |
+------+----------------+-----------+--------------+
4 rows in set (0.00 sec)
请注意具有3个字符串元素以外的任何东西的有用效果。任何查看数据的人都不知道字符串元素是什么。 “每种产品的规格都会冗长且有问题”-此处大多数建议表明,从长远来看,存储csv值比规范数据更成问题。