2017-08-12 77 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) 

取决于你的数据库,你也许会需要做一个内部的选择和顺序外部查询。

相关问题