- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
表 A 是一个订单表,每个订单 1 行。表 B 是一个 Items 表,每个项目 1 行。它们通过订单号链接。当我加入他们的 O/N 时,如果订单上有超过 1 件商品,我会收到多行订单。我按不同表中的字段进行分组,因此无法使用该方法。
连接它们的正确方法是什么,这样 1 个订单行和 3 个项目行不会变成 3 个订单和 3 个项目?
对这个基本问题表示歉意,我的大脑今天崩溃了。
我用下面的内容简化了我的要求。
CREATE TABLE Orders
(`ORDURN` varchar(8), `ORDSOU` varchar(10), `ORDVAL` decimal(9,2))
;
INSERT INTO Orders
(`ORDURN`, `ORDSOU`, `ORDVAL`)
VALUES
('12345112', 'WEB', '28.41'),
('22544548', 'ADVERT', '11.58'),
('44848643', 'TELEPHONE', '41.18')
;
CREATE TABLE Items
(`ITMSTK` varchar(10), `ITMQTY` varchar (3), `ITMCOG` int(9), `ITMURN` varchar(8), `ITMSOU` varchar(10))
;
INSERT INTO Items
(`ITMSTK`, `ITMQTY`, `ITMCOG`, `ITMURN`, `ITMSOU`)
VALUES
('WN778', '1', '2.00', '12345112', 'WEB'),
('WN776', '1', '1.45', '12345112', 'WEB'),
('WN771', '1', '1.86', '12345112', 'WEB'),
('WN845', '1', '1.45', '22544548', 'ADVERT'),
('WN846', '1', '1.38', '22544548', 'ADVERT'),
('WN845', '1', '20.16', '44848643', 'TELEPHONE')
;
CREATE TABLE Sources
(`SOUCOD` varchar(10), `SOUDESC` varchar(45))
;
INSERT INTO Sources
(`SOUCOD`, `SOUDESC`)
VALUES
('WEB', 'Web Orders 2016'),
('ADVERT', 'Advert Junes 2016'),
('TELEPHONE', 'Telephone Orders 2016')
;
然后我在下面运行这个查询
select
S.soucod as Sources,
s.soudesc as Description,
sum(i.itmcog) as COG,
count(DISTINCT o.ordurn) as Orders,
sum(o.ordval) as OrderValue
from sources s
join orders o on o.ordsou = s.soucod
join items i on i.itmsou = s.soucod
group by s.soucod
给我
Sources Description COG Orders OrderValue
ADVERT Advert Junes 2016 2 1 23.16
TELEPHONE Telephone Orders 2016 20 1 41.18
WEB Web Orders 2016 5 1 85.23
显然,由于连接计算了多行,因此订单值已被扭曲
这是期望的结果(商品成本是错误的,但我知道为什么会这样,就像我创建数据的方式一样,此列除了显示需要引入商品之外没有任何目的)表):
Sources Description COG Orders OrderValue
ADVERT Advert Junes 2016 2 1 11.58
TELEPHONE Telephone Orders 2016 20 1 41.18
WEB Web Orders 2016 5 1 28.41
我希望这能解释它。
最佳答案
需要顺序连接来计算中间结果。在连接的外部级别,对子查询的结果使用 max()
函数。
select Sources, Description,
sum(i.itmcog) as COG,
max(Orders) as Orders, max(OrderValue) as OrderValue
from (
select s.soucod as Sources, s.soudesc as Description,
count(o.ordurn) as Orders,
sum(o.ordval) as OrderValue
from sources s
join orders o on o.ordsou = s.soucod
group by s.soucod
) A
join items i on i.itmsou = A.Sources
group by A.Sources
如果只从依赖的表中选择一个结果,您可以在选择列表中使用子查询:
select s.SOUCOD as Sources, s.soudesc as Description,
(select sum(i.itmcog)
from items i
where i.itmsou=s.soucod
) as COG,
count(o.ordurn) as Orders,
sum(o.ordval) as OrderValue
from sources s
join orders o on o.ordsou = s.soucod
group by s.soucod
关于MYSQL 连接具有不同行数的相关表 "Record",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39148729/
我有一个包含未定义条目数的数据文件,如下所示: A B C D E.. 1 0 2 5 4 7 4 3 4 1 8 7 4 0 7 1 1 第一行代表工作时间,而不是暂停等交替方式。为了可
我需要有关小型 SQL 查询的帮助。考虑下表: TicketNo | Rules | Audit Result --------------------------------- P
我有一个非常大的表(~1 000 000 行)和带有联合、连接和 where 语句的复杂查询(用户可以选择不同的 ORDER BY 列和方向)。我需要获取分页的行数。如果我运行查询而不计算行数,它会很
我想获取数据帧的行数。 我可以通过 size(myDataFrame)[1] 实现这一点. 有更干净的方法吗? 最佳答案 如果您正在使用 DataFrames具体来说,那么你可以使用 nrow() :
是否可以在带有千位分隔符的 VIM 状态栏中显示行数,最好是自定义千位分隔符? 例子: set statusline=%L 应该导致“1,234,567”而不是“1234567”。 最佳答案 我找到了
我有一个非常基本的问题,但不知道该怎么做。如果 mysql 表中的行数增加,我想刷新页面。我已经尝试了一些不同的事情,比如在表中添加一个单独的列,如果行数和这个值相等,则值为 (id + 1),然后进
我的 mysql TB 中的行数(如 TB 信息中所示)是 11093,而自动递增 ID(从 1 开始)是 11361。为什么会这样? 最佳答案 删除的行不会重置 AI 索引。行数是当前表中的条目数,
我有一个 MySQL 表如下。 emp_no emp_name dob gender 1 A 1978-10-10 Male 2 B
ifstream inFile; inFile.open(filename); //open the input file stringstream strStream; strStream << i
SELECT * FROM table1 WHERE EXISTS (SELECT * FROM table2 WHERE *condition*) 例如,我可以检查是否有 3 行符合 table2
我正在尝试提取 SQL 表中的总行数。 我正在使用以下代码: $rowNum = mysql_query("SELECT COUNT(*) FROM Logs"); $count = mysql_fe
我想知道表格 View 的行宽是多少,UITableViewCell 文本标签的字体是什么,有人可以帮我吗? 最佳答案 NSLog(@"width: %f", cell.frame.size.widt
对于以下内容: def linecount(filename): count = 0 for x in open(filename): count += 1 r
感谢关注。 我用C语言写了一段代码来统计字数、行数和字符数。 while((c = fgetc(fp)) != EOF) { if((char)(c) == ' ' || (char)(c)
我是 matlab 的新手,只需要更改代码中的一个非常小的东西。我有以下矩阵: ans = 1 1 1 1 2 1 2 1
我只是想弄清楚如何确定行数,然后使该数字显示在 HTML 中。 我准备好的声明如下所示: if($stmt = $mysqli -> prepare("SELECT field1, field2, f
PDO 显然无法计算从选择查询返回的行数(mysqli 有 num_rows 变量)。 除了使用 count($results->fetchAll()) 之外,有没有办法做到这一点? 最佳答案 根据手
SELECT count(*) FROM Stack WHERE Id = 33478 GROUP BY SID Output: (No column name) 1 4 对于结果;有两排。怎么退货
IE。如果我们有一个包含400万行的表。 其中具有一个STATUS字段,该字段可以采用以下值:TO_WORK,BLOCKED或WORKED_CORRECTLY。 您是否会在一个仅会更改一次的字段上进行
所以在JTextArea中有一个getLineCount()是否有与JTextPane类似的东西,因为我可以找到任何东西。也许有不同的方法来获得它?我想获取当前存在的行数。 最佳答案 (正如您所指出的
我是一名优秀的程序员,十分优秀!