我有3张桌子:tests
。
ID , date , name of the test
:包含列:cases
s。
ID , Test_ID, QC number
:每个测试的案例都很少,因此列数为:names
QC number and QC name.
:将QC编号转换为名称,因此表格列为:ID date name
1 1.1.16 test 1
2 2.2.16 test 2
我想创建一个正确的查询,让我以正确的方式访问所有字段,但我希望结果不显示重复。
例如:
测试:
ID Test_ID QC_NUM
1 1 QC-1234
2 1 QC-6789
3 1 QC-0003
例:
QC_NUM QC_NAME
QC-1234 stresss
QC-6789 ping
QC-0003 pong
名:
"QC-1234"
如果我正在寻找具有{{1}}个案例的所有测试 - 我想在“测试”表中只获得正确的行。
如果我正在寻找所有具有“ping”测试的测试 - 我想在“测试”表中只获得正确的行。
我希望我足够清楚......
编辑: 这是一个示例: http://sqlfiddle.com/#!9/f2884/4
正如您所看到的那样,问题是在没有条件的情况下尝试获取数据时 - 我得到了重复数据。
答案 0 :(得分:0)
以下查询应该没问题:
select distinct t.*
from tests t, cases c, names n
where t.ID = c.Test_ID
and c.QC_NUM = n.QC_NUM
and c.QC_NUM = 'QC-1234'
select distinct t.*
from tests t, cases c, names n
where t.ID = c.Test_ID
and c.QC_NUM = n.QC_NUM
and n.QC_NAME = 'ping'
如果要在查询中使用join语句(ANSI标准),您还可以尝试以下操作:
select distinct t.*
from tests t
join cases c
on t.ID = c.Test_ID
join names n
on c.QC_NUM = n.QC_NUM
where c.QC_NUM = 'QC-1234'
select distinct t.*
from tests t
join cases c
on t.ID = c.Test_ID
join names n
on c.QC_NUM = n.QC_NUM
where c.QC_NAME = 'ping'