如何在mysql中建立联接表?

问题描述 投票:-3回答:2

我在mysql的同一数据库中有两个表。 “答案”表和“返回”表。

AnswerTable

seqAnswer question1 question2 question3
1         3         2         3
2         4         1         2
3         1         3         4

ReturnTable

id seqreturn question1 question2 question3
1  3         2         3         1 (X,O,X)
2  1         2         2         1 (X,O,X)
3  2         4         3         1 (O,X,X)
4  1         3         2         4 (O,O,X)
5  3         1         3         1 (O,O,X)
6  3         1         3         2 (O,O,X)

question3的(OX,OX,OX)实际上没有插入Returntable.just问问题

我想布置特定的联接表。如何获得下面的联接表?

所需的联接表

Test Number question1 question2 question3 Total
1           1         2         0         2
2           1         0         0         1
3           2         3         1         3
mysql mariadb jointable
2个回答
0
投票

我知道您想计算每个问题收到了多少个好的答案。这可以通过条件聚合来解决,如下所示:

select
    a.seqAnswer test_number,
    sum(a.question1 = r.question1) question1,
    sum(a.question2 = r.question2) question2,
    sum(a.question3 = r.question3) question3,
    count(*) total
from AnswerTable a
inner join ReturnTable r on r.seqReturn = a.seqAnswer
group by a.seqAnswer
order by test_number

Demo on DB Fiddle

test_number |第1个问题|第2个问题|问题3 |总----------:| --------:| --------:| --------:| ----:1 | 1 | 2 | 0 | 22 | 1 | 0 | 0 | 1个3 | 2 | 3 | 0 | 3

0
投票

使用subquery将获得您所需要的,并将每个问题总计加进去

select t1.* 
    , iif(q1 >= 1, 1, 0) + iif(q2 >= 1, 1, 0) + iif(q3 >= 1, 1, 0) as Total
from
    (select seqreturn
        , count(question1) as q1
        , count(question2) as q2
        , count(question3) as q3
    from tableA
    group by seqreturn) t1
© www.soinside.com 2019 - 2024. All rights reserved.