2013-09-18 8 views
0

У меня есть простое SQL-соединение, которое дублирует данные в результатах. Один столбец:Mysql Join Where Clause duplicate results

select * from ohyeah_borrower_prefs where inumber=13522 

Верните 3 строки правильно.

ID  Num  iNum  Cat  Subcat   Date   Code 
'14332', '13522', '13522', 'Fiction', 'Espionage', '2011-04-04', 'BRAILLE' 
'14333', '13522', '13522', 'Fiction', 'Espionage', '2011-04-04', '2 TRACK' 
'14334', '13522', '13522', 'Fiction', 'Espionage', '2013-07-18', 'LARGE PRIN' 

Однако, если я пытаюсь это присоединиться к моему столу пунктов тянуть уникальный штрих-код, я получаю 9 результатов, а не на 3, я бы ожидать - увидеть каждый результат повторяется 3 раза!

select code, items.barcode from ohyeah_borrower_prefs 
LEFT JOIN items ON 
`items`.`inumber` = `ohyeah_borrower_prefs`.`inumber` 
WHERE (`ohyeah_borrower_prefs`.`biblionumber` = 13522) 

Результаты:

CODE   BARCODE 
BRAILLE  90004071 
BRAILLE  30025000162744 
BRAILLE  30025000128349 
"2 TRACK", 90004071 
"2 TRACK", 30025000162744 
"2 TRACK", 30025000128349 
"LARGE PRIN" 90004071 
"LARGE PRIN" 30025000162744 
"LARGE PRIN" 30025000128349 

ли кто-нибудь сможет помочь мне? У меня такое чувство, что это действительно глупая проблема, но я не могу понять это в момент!

+2

Что вы ожидали? Для каждого «кода» существует три 'штрих-кода', поэтому вы получаете все три. –

+1

Какие данные находятся в таблице элементов? Похоже, что запрос работает так, как есть. – Vulcronos

ответ

0

Вы можете сделать это, если хотите одну запись для каждого КОДА, а затем перечислите штрих-коды для каждого. В противном случае ваш запрос работает правильно, если у вас есть 3 штрих-кода для каждого кода, вы получите 3 строки для каждого кода.

select code, GROUP_CONCAT(items.barcode) as barcodes 

from ohyeah_borrower_prefs 

     LEFT JOIN items 
     ON `items`.`inumber` = `ohyeah_borrower_prefs`.`inumber` 

WHERE (`ohyeah_borrower_prefs`.`biblionumber` = 13522) 

GROUP BY code;