2015-07-08 2 views
-2

Я написал ниже запрос, но я получаю несколько повторяющихся строк в результатах, пожалуйста, кто-нибудь может увидеть, где я ошибаюсь?Дублирующие результаты на внутреннем соединении

 use Customers 
    select customer_details.Customer_ID, 
    customer_details.customer_name, 
    metering_point_details.MPAN_ID, 
    Agents.DA_DC_Charge 

    from Customer_Details 
    left join Metering_Point_Details 
    on customer_details.customer_id = Metering_Point_Details.Customer_ID 
left join agents 
on customer_details.Customer_ID = agents.customer_id 

    order by customer_id 
+0

Не может быть ничего плохого. Зависит от структуры вашей таблицы, данных примера и ожидаемого результата, который вы не показываете. –

+0

Является ли каждое поле дублирующим? Или только поля из определенной таблицы. Если последнее, это указывает на то, что это может означать, что у вас есть только одна-ко-многим взаимосвязь между вашими таблицами в соединении и что на одной стороне есть несколько записей для соответствующей записи на другой стороне. –

ответ

0

Это не имеет значения, но вы не используете INNER JOIN. Независимо от того, ваши неожиданные строки указывают, что ваши критерии JOIN не являются достаточно конкретными, чтобы вернуть ожидаемый результат. Вы можете использовать SELECT DISTINCT, если ваши результаты будут полностью дублирующими, и если вы хотите узнать, почему вы получаете эти дубликаты, вы можете просто использовать SELECT *, чтобы увидеть полную информацию между несколькими строками, которые возвращаются с использованием ваших критериев JOIN, что должно помогите вам либо сделать ваши критерии более конкретными, либо показать, что у вас есть дублированные записи в одной из таблиц, которые вы используете в своем JOIN.

С образцовыми данными мы можем проанализировать проблему больше, но вероятность того, что она вам не понадобится, как только вы увидите, почему строки дублируются.

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