2017-02-12 9 views
-1

Мне нужно устранить дубликаты идентификаторов. Я уже пробовал код ниже, но когда я его использую, мне ничего не появляется.Disticnt id, когда я использую соединение

Select disticnt i.id,b.barcode,i.code,i.name,i.price 
from inventory i 
join barcodes b on i.id=b.id 

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

Here is an image of my data

+0

Можете ли вы поделиться структурами таблиц, некоторыми примерами данных и результатами, которые вы пытаетесь получить за это? – Mureinik

+0

вы можете «group by i.id»? Но проблема, с которой вы столкнетесь, - это правильная запись штрих-кода, которую вы действительно хотите? – Gravy

+0

, когда я пытаюсь это сделать, я получаю эту ошибку. Столбец «b.BarCode» недопустим в списке выбора, потому что он не содержится ни в агрегатной функции, ни в предложении GROUP BY. и то же самое для остальной части моих столбцов. – Dim1

ответ

0

Проблема заключается в том, что таблица штрих-кодов может иметь несколько строк для каждого идентификатора в таблице инвентаризации. Чтобы получить только одну запись из таблицы инвентаризации, вам сначала нужно выяснить, какой штрих-код вы хотите получить для каждого идентификатора, который имеет несколько штрих-кодов. Один из способов - использовать группу с помощью max или min:

SELECT i.id, 
     MAX(b.barcode) as barcode, 
     i.code, 
     i.name, 
     i.price 
FROM inventory i 
JOIN barcodes b on i.id=b.id 
GROUP BY i.id, i.code, i.name, i.price