2014-09-08 4 views
3

Привет Разработчики У меня есть две таблицы, совмещая с помощью MySQL JOIN, получая несколько строк вместо одной строки, пожалуйста, решить эту проблему,MySQL внутреннее соединение возвращает повторяющиеся строки

tbltestdefault 
----------------------------------------------- 
ID Test_ID   Description 
----------------------------------------------- 
1 117     Blood Group 
2 117     Rh Factor 
3  4     HB 
4  4      RBC 
5  4      ESR 

tblreportdetail 
----------------------------------------------- 
ID Test_Default_ID   Result_Value 
----------------------------------------------- 
1  117        A 
2  117        Positive 
3  4        12 
4  4        15 
5  4        25 

мой запрос

SELECT a.Description, 
b.Result_Value 
from tbltestdefault a 
inner join tblreportdetail b on a.Test_ID = b.Test_Default_ID 

этот запрос возвращает несколько строк

результат вышеупомянутого запроса

tblreportdetail 
Description Result_Value 
HB   12 
HB   15  
HB   25 
HB   12 
RBC   15 
RBC   25 
RBC   12 
RBC   15 
ESR   
ESR 
ESR 
ESR 
Blood Group 
Blood Group 
Blood Group 
Blood Group 
Rh Factor 
Rh Factor 
Rh Factor 
Rh Factor 
+0

У вас есть вопрос, который вы хотели задать? Или вы просто давали отчет о статусе? – spencer7593

+0

Вопрос в том, почему я получаю повторяющиеся строки? –

ответ

2

Это не обманы. Вы получаете именно то, о чем просили. Если вы добавите два идентификатора таблицы в свой запрос, вы увидите, что они не обманывают, например.

Description Result_Value a.id b.id 
HB    12    3  3 
HB    15    3  4 
HB    25    3  5 
HB    12    4  3 
HB    15    4  4 
HB    25    4  5 
etc... 
+0

нет, у меня просто есть Test_ID и Test_Default_ID нет уникального ID –

1

Q: вопрос, почему я получаю повторяющиеся строки?

А: Строка с одинаковым содержанием производится в Resultset Returne по запросу, из-за указанный предикат, и потому, что существует несколько строк в каждой таблице, которые имеют то же Test_ID/Test_Default_ID значения.

Ожидаемый результат запроса, учитывая приведенные данные, будет состоять из 13 строк. Это 2 * 2 + 3 * 3.

Каждый из двух Test_ID = 117 строк соответствует двум Test_Default_ID = 117 строк, в общей сложности 4 строки возвращены.

Каждый из трех Test_ID = 4 строки соответствует трем Test_Default_ID = 4 строки, в общей сложности 9 строк.

Поскольку запрос не содержит уникальных идентификаторов строк в наборе результатов, содержимое некоторых возвращенных строк идентично.

Именно поэтому вы наблюдаете «повторяющиеся строки», возвращаемые запросом.

+0

благодарю вас за ваш описательный ответ –

+0

вы можете мне помочь, как я могу добавить уникальный идентификатор между этими двумя таблицами? –

Смежные вопросы