2015-02-25 4 views
0
select distinct Analysed.resultId,bugOwner,Analysed.bugId as BugDet,bugType,testCaseName from Bug INNER JOIN Analysed on Analysed.bugId=Bug.bugId INNER JOIN Results on Analysed.runId=Results.runId where Analysed.runId=64 

Вышеупомянутые работы отлично.внутреннее соединение Запрос не работает

Теперь у меня есть еще одна таблица результатов (resultId, RunID, анализировал, АСМАП)

Я также хочу, чтобы включить АСМАП в моем другом запросе, так что я добавил,

select Analysed.resultId,bugOwner,Analysed.bugId as BugDet,bugType,testCaseName from Bug 
INNER JOIN 
Analysed on Analysed.bugId=Bug.bugId 
INNER JOIN Results on Analysed.runId=Results.runId 
where Analysed.runId=64 

Но этот запрос неверен. Он дублирует записи. Я предполагаю, что он взял какой-то перекрестный продукт или что-то в этом роде. Кто-нибудь знает, как его решить?

данных:

Results Analysed

+1

Примеры данных с ожидаемым выходом. Или вы всегда можете применить 'DISTINCT' –

+0

может ли показать мне, как использовать отличный от описанного выше запроса? – user1698232

+1

нет столбца с именем runId в вашей таблице результатов, он должен быть Results.resultid –

ответ

0

Проблема заключается в том, что данные. Он явно получил несколько Results для каждого Analysed (или даже множественного Analysed для каждого Bug)

Вы можете использовать DISTINCT или GROUP BY избавиться от дубликатов или, в зависимости от ваших требований/схема фильтра/данных для столбца, как этот analysed флаг, чтобы получить только один Analysed запись за Results ряд.

select DISTINCT Analysed.resultId,bugOwner,Analysed.bugId as BugDet,bugType,testCaseName from Bug 
INNER JOIN 
Analysed on Analysed.bugId=Bug.bugId 
INNER JOIN Results on Analysed.runId=Results.runId 
where Analysed.runId=64 
+0

как мы можем использовать различные в моем запросе .. можно показать? – user1698232

+0

Я предлагаю вам изучить основы агрегации, вам не удастся далеко продвинуться в SQL без него – jean