我对某些SQL工作有点困惑。基本上,我有3个不同的表,看起来像这样:(注意:"数字"应该是书的ID号,重复的数字意味着它是同一本书。我改变了为了简单起见,它就像这样。)
表A:
Number Name Surname
1 Bob Bobinson
1 Paul Paulster
2 Simon Simones
3 Anton Antonio
etc.
表B:
Number Book
1 Taken
1
1
2 Taken
2 Taken
3
3 Taken
3 Taken
etc.
表C:
Number Pages
1 245
2 147
3 512
etc.
我需要做的是为每个不同的姓名和姓氏计算其数字在表B中重复的次数,然后计算每个名称的总页数。 答案表应如下所示:
Bob Bobinson 3 735
Paul Paulster 3 735
Simon Simones 2 294
Anton Antonio 3 1536
我试过这样的事情:
SELECT Name, Surname, Count(A.Number = B.Number) FROM A, B, C;
是的,我说实话:我完全不知道它需要什么。之后我尝试实施WHILE A.Number = B.Number,但它并没有为我做好。任何帮助将不胜感激。
P.S。 "拍摄"用于检查哪个号码的得分最多。
答案 0 :(得分:3)
这应该得到你想要的东西:
select A.Name, B.Surname,
(select count(*)
from TableBB
where B.Number = A.Number) As CNT,
C.Pages
from TableA
Join TableC on A.Number = C.Number;
或者你可以使用子查询来实现它,如果它使后续更改更容易,但一般来说这些也不会表现得很好:
@Getter
@Setter
@Accessors(fluent = true)
public class SampleClass {
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}