多个表中的SQL不同值

时间:2016-04-12 09:31:45

标签: sql postgresql

我对某些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。 "拍摄"用于检查哪个号码的得分最多。

1 个答案:

答案 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;
    }
}