我需要查询我的数据库中有销售商品记录的表格。我希望查询检测特定产品并计算销售数量。该产品现在有300个,但将来会增加。
以下是我的数据库表的示例
#----------------------------
# Table structure for litorder
#----------------------------
CREATE TABLE `litorder` (
`id` int(10) NOT NULL auto_increment,
`name` varchar(50) NOT NULL default '',
`address` varchar(50) NOT NULL default '',
`xdate` date NOT NULL default '0000-00-00',
`ref` varchar(20) NOT NULL default '',
`code1` varchar(50) NOT NULL default '',
`code2` varchar(50) NOT NULL default '',
`code3` varchar(50) NOT NULL default '',
`code4` varchar(50) NOT NULL default '',
`code5` varchar(50) NOT NULL default '',
`code6` varchar(50) NOT NULL default '',
`code7` varchar(50) NOT NULL default '',
`code8` varchar(50) NOT NULL default '',
`code9` varchar(50) NOT NULL default '',
`code10` varchar(50) NOT NULL default '',
`code11` varchar(50) character set latin1 collate latin1_bin NOT NULL default '',
`code12` varchar(50) NOT NULL default '',
`code13` varchar(50) NOT NULL default '',
`code14` varchar(50) NOT NULL default '',
`code15` varchar(50) NOT NULL default '',
`product1` varchar(100) NOT NULL default '0',
`product2` varchar(100) NOT NULL default '0',
`product3` varchar(100) NOT NULL default '0',
`product4` varchar(100) NOT NULL default '0',
`product5` varchar(100) NOT NULL default '0',
`product6` varchar(100) NOT NULL default '0',
`product7` varchar(100) NOT NULL default '0',
`product8` varchar(100) NOT NULL default '0',
`product9` varchar(100) NOT NULL default '0',
`product10` varchar(100) NOT NULL default '0',
`product11` varchar(100) NOT NULL default '0',
`product12` varchar(100) NOT NULL default '0',
`product13` varchar(100) NOT NULL default '0',
`product14` varchar(100) NOT NULL default '0',
`product15` varchar(100) NOT NULL default '0',
`price1` int(10) NOT NULL default '0',
`price2` int(10) NOT NULL default '0',
`price3` int(10) NOT NULL default '0',
`price4` int(10) NOT NULL default '0',
`price5` int(10) NOT NULL default '0',
`price6` int(10) NOT NULL default '0',
`price7` int(10) NOT NULL default '0',
`price8` int(10) NOT NULL default '0',
`price9` int(10) NOT NULL default '0',
`price10` int(10) NOT NULL default '0',
`price11` int(10) NOT NULL default '0',
`price12` int(10) NOT NULL default '0',
`price13` int(10) NOT NULL default '0',
`price14` int(10) NOT NULL default '0',
`price15` int(10) NOT NULL default '0',
`quantity1` int(10) NOT NULL default '0',
`quantity2` int(10) NOT NULL default '0',
`quantity3` int(10) NOT NULL default '0',
`quantity4` int(10) NOT NULL default '0',
`quantity5` int(10) NOT NULL default '0',
`quantity6` int(10) NOT NULL default '0',
`quantity7` int(10) NOT NULL default '0',
`quantity8` int(10) NOT NULL default '0',
`quantity9` int(10) NOT NULL default '0',
`quantity10` int(10) NOT NULL default '0',
`quantity11` int(10) NOT NULL default '0',
`quantity12` int(10) NOT NULL default '0',
`quantity13` int(10) NOT NULL default '0',
`quantity14` int(10) NOT NULL default '0',
`quantity15` int(10) NOT NULL default '0',
`amount1` int(10) NOT NULL default '0',
`amount2` int(10) NOT NULL default '0',
`amount3` int(10) NOT NULL default '0',
`amount4` int(10) NOT NULL default '0',
`amount5` int(10) NOT NULL default '0',
`amount6` int(10) NOT NULL default '0',
`amount7` int(10) NOT NULL default '0',
`amount8` int(10) NOT NULL default '0',
`amount9` int(10) NOT NULL default '0',
`amount10` int(10) NOT NULL default '0',
`amount11` int(10) NOT NULL default '0',
`amount12` int(10) NOT NULL default '0',
`amount13` int(10) NOT NULL default '0',
`amount14` int(10) NOT NULL default '0',
`amount15` int(10) NOT NULL default '0',
`totalNaira` double(20,0) NOT NULL default '0',
`totalDollar` int(20) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='InnoDB free: 4096 kB; InnoDB free: 4096 kB; InnoDB free: 409';
#----------------------------
# Records for table litorder
#----------------------------
insert into litorder values
(27, 'Sanyaolu Fisayo', '14 Adegboyega Street Palmgrove Lagos', '2010-05-31', '', 'DL 001', 'DL 002', 'DL 003', '', '', '', '', '', '', '', '', '', '', '', '', 'AILMENT & PREVENTION DVD- ENGLISH', 'AILMENT & PREVENTION DVD- HAUSA', 'BEAUTY CD', '', '', '', '', '', '', '', '', '', '', '', '', 800, 800, 3000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 16, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12800, 12800, 60000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '85600', 563),
(28, 'Irenonse Esther', 'Lagos,Nigeria', '2010-06-01', '', 'DL 005', 'DL 008', 'FC 004', '', '', '', '', '', '', '', '', '', '', '', '', 'GET HEALTHY DVD', 'YOUR FUTURE DVD', 'FOREVER FACE CAP (YELLOW)', '', '', '', '', '', '', '', '', '', '', '', '', 1000, 900, 2000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2000, 1800, 6000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '9800', 64),
(29, 'Kalu Lekway', 'Lagos, Nigeria', '2010-06-01', '', 'DL 001', 'DL 003', '', '', '', '', '', '', '', '', '', '', '', '', '', 'AILMENT & PREVENTION DVD- ENGLISH', 'BEAUTY CD', '', '', '', '', '', '', '', '', '', '', '', '', '', 800, 3000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2400, 18000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '20400', 133),
(30, 'Dele', 'Ilupeju', '2010-06-02', '', 'DL 001', 'DL 003', '', '', '', '', '', '', '', '', '', '', '', '', '', 'AILMENT & PREVENTION DVD- ENGLISH', 'BEAUTY CD', '', '', '', '', '', '', '', '', '', '', '', '', '', 800, 3000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8000, 30000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '38000', 250);
答案 0 :(得分:2)
我不确定你的问题是什么,但你的桌面设计似乎是你的问题。任何时候你都有列foo1,foo2,foo3等......这应该是你的设计可能需要修改的标志。
我建议您查看database normalization和First Normal Form上的维基百科页面。特别是,您可以查看有关repeating groups across columns以及如何resolve it的部分。
答案 1 :(得分:0)
您需要花费几个小时来学习关系设计。为您的实体(产品,客户,订单)建模,创建必要的外键并连接表,并了解如何在查询中进行连接。
答案 2 :(得分:0)
我不确定您需要哪个“数量”,因为您的表中有12个不同的“数量”字段。这可能类似于您正在寻找的东西:
SELECT COUNT(quantity1) AS TotalAmnt
FROM litorder
WHERE product1 = 'yourProduct'
GROUP BY product1
您也希望尝试normalize your database,以便将来更轻松地进行此类查询。
答案 3 :(得分:0)
由于表没有规范化,我认为查询不会很整洁。但是,如果你必须以艰难的方式去做,那么我认为这可能有用
选择product1,quantity1 from 表名,其中product1 ='您要搜索的产品名称' 联盟 选择product2,quantity2 from 表名,其中product2 ='您要搜索的产品名称'
对表格中的每一列进行上述15次。但随着更多产品的加入,这个查询会变得很慢。所以最好的方法是规范化这个表。这肯定会为您节省大量的时间。