Как избежать повторяющихся строк в моем операторе SELECT из нескольких таблиц? - PullRequest
0 голосов
/ 03 февраля 2020

Я использую SQL Сервер для выбора из нескольких таблиц, но он дублирует строки, это мой SELECT оператор:

select 
    Lab_orders_Cash.cash_order_id as 'Order Number',
    Patients.Patient_No as 'Patient No',
    Patients.Patient_Name as 'Patient Name',
    Patients.Age as 'Patient Age',
    labtests.testid as 'testid',
    LabTests.TestName as 'Test Name',
    Lab_orders_Cash.order_date,
    Lab_orders_Cash.USER_ID as 'Requested By' ,
    Lab_Hematology_Samples.COLLECTION_DATE as 'Collection Date',
    Lab_Hematology_Samples.COLLECTED_BY as 'Collected By' ,
    Lab_Hematology_Samples.RECEIVING_DATE as 'Receiving Date' ,
    Lab_Hematology_Samples.RECEIVED_BY as 'Received By' 
from 
    Lab_orders_Cash
inner join 
    Order_Details_Cash on  Lab_orders_Cash.cash_order_id = Order_Details_Cash.CASH_ORDER_ID
inner join 
    patients on  Lab_orders_Cash.patient_no = Patients.Patient_No
inner join 
    LabTests on  Order_Details_Cash.TESTID=LabTests.TestId 
inner join 
    Lab_Hematology_Samples on Lab_orders_Cash.cash_order_id= Lab_Hematology_Samples.ORDER_ID
where 
    Lab_orders_Cash.patient_no = 32

У меня есть в этом select 1 cash_order_id с 2 элементами в Lab_Hematology_Samples его дублирует, когда я добавляю это внутреннее объединение

inner join Lab_Hematology_Samples on Lab_orders_Cash.cash_order_id= Lab_Hematology_Samples.ORDER_ID

, он показывает каждый элемент 2 раза по 2 строки, потому что порядок включает 2 элемента, если порядок включает 3 элемента, он показывает каждый элемент 3 раза, как можно избежать дубликатов из моего выбора, первичным ключом был id столбца в каждой таблице?

1 Ответ

1 голос
/ 03 февраля 2020

Вы можете использовать select distinct, чтобы избежать дублирования в вашем результате. Однако эта операция окажет негативное влияние на вашу среду выполнения (особенно при работе с большими базами данных), поэтому вы должны использовать ее, только если возможны дубликаты.

...