2015-09-04 4 views
0

Рассмотрение некоторых кодов, и я наткнулся на этот код SQL, который я не понимаю, что он делает.Интерпретация кода

INNER JOIN PPORDFIL_SQL 
    on dbo.att_Synergy_Absences.ItemCode = PPORDFIL_SQL.item_no 
    and PPORDFIL_SQL.id in 
     (Select top 1 p2.ID 
     from PPORDFIL_SQL as p2 
     where p2.item_no = PPORDFIL_SQL.item_no 
      and p2.ord_status = PPORDFIL_SQL.ord_status 
      and dbo.att_Synergy_Absences.syscreated <= ppordfil_sql.entered_dt 
     order by p2.id) 

Полагаю, что я должен показать 1 запись независимо от самого раннего, независимо от количества ввода.

Например, существует несколько элементов одного и того же элемента item_no, но номер заказа отличается, поэтому он будет показывать только одну запись, даже если несколько номеров заказов одного и того же item_no.

Я попытался запустить код, но он не сработал.

Прокомментируйте, что он делает или я действительно понял все правильно? lol

+1

Это отличное место, чтобы начать получать ответ. http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ –

+0

Ваш подзадатчик заказывается по ID - возможно, он должен заказывать по дате поле вместо этого? –

ответ

0

Ваши два условия соединения мешают друг другу.

Попробуйте так:

INNER JOIN PPORDFIL_SQL on PPORDFIL_SQL.id = (
    Select top 1 p2.ID 
    from PPORDFIL_SQL as p2 
    where p2.item_no = dbo.att_Synergy_Absences.ItemCode 
    and p2.ord_status = PPORDFIL_SQL.ord_status 
    and dbo.att_Synergy_Absences.syscreated <= ppordfil_sql.entered_dt 
    order by p2.id 
) 
Смежные вопросы