2017-08-12 73 views
0

我有兩個表項目和代碼。代碼表具有項目表的引用,從項目到代碼具有一對多的關係。現在我的要求是根據代碼表中的標籤上的搜索條件獲取所有項目數據,並根據該項目代碼表中第一條記錄的標籤來訂購項目如何根據引用表中的一個參數進行搜索,並根據引用表中的第一條記錄對該項目記錄進行排序?

例如,如果我的項目表中包含以下數據:

PROJECT_ID PROJECT_NAME PROJECT_TYPE 
1   test1  a 
2   test2  b 

和代碼表已下文提到其中PROJECT_ID爲外鍵數據,如果我是基於標籤b搜索則比第一搜索應該發生在項目和代碼和紀錄標籤b的加入將會再發現按代碼的順序將在該項目的第一個映射值上進行排序,即在帶有標籤d的代碼中記錄,因爲這是引用該項目的代碼中的第一條記錄。

ID PROJECT_ID LABEL 
1 1   d 
2 1   b 
3 1   c 
4 2   a 

所需的輸出

PROJECT_ID PROJECT_NAME PROJECT_TYPE 
1   test1  a 
+0

我不明白你是如何達到預期產出的。 –

+0

@TimBiegeleisen對不起,我更新了輸出。 –

+0

輸出中的列標籤在哪裏,根據條件,輸出剛得到第一個表的第一行 –

回答

1

如果我理解正確:

select p.project_id, p.project_name, p.project_type, min(l.label) 
    from project p 
    inner join label l on p.project_id=l.project_id 
    where p.project_id in (select project_id from label where label=?) 
    group by p.project_id, p.project_name, p.project_type 
    order by min(l.label) 

取決於你的數據庫,你也許會需要做一個內部的選擇和順序外部查詢。

相關問題