无法正确查询

时间:2016-05-26 13:33:39

标签: sql join

我有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

正如您所看到的那样,问题是在没有条件的情况下尝试获取数据时 - 我得到了重复数据。

1 个答案:

答案 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'