【问题标题】:How to search based on one parameter in referencing table and sort based on the first record in referencing table referring that project record?如何根据引用表中的一个参数进行搜索,并根据引用表中引用该项目记录的第一条记录进行排序?
【发布时间】:2017-08-12 14:37:37
【问题描述】:

我有两个表项目和代码。代码表具有项目表的引用,从项目到代码具有一对多的关系。现在我的要求是根据代码表中标签上的搜索条件获取所有项目数据,并根据该项目代码表中仅第一条记录的标签对项目进行排序

例如,如果我的项目表有以下数据:

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

【问题讨论】:

  • 我不明白你是如何达到预期输出的。
  • @TimBiegeleisen 对不起我的错误,我已经更新了输出。
  • 输出中的列标签在哪里,您的输出只是根据条件从第一个表中获取第一行
  • 它不在输出中,但项目是根据它排序的。

标签: sql


【解决方案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)

取决于您的数据库,您可能需要对外部查询进行内部选择和排序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-29
    • 1970-01-01
    • 1970-01-01
    • 2020-11-19
    • 2021-07-14
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    相关资源
    最近更新 更多