将多个表中的数据获取到单行中,同时连接一些值

2024-06-28

我正在尝试从表中检索数据并将多行合并为一列,而不重复任何信息。

我有以下表格:简介、资格、项目。


Profile

pro_id  surname       firstname   
------  -------       ----------
   1    John          James           
   2    King          Fred        
   3    Luxury-Yachts Raymond

Qualification

pro_id  Degree   School               Year
------  ------   ------               -----
   1    MBA      Wharton university   2002        
   1    LLB      Yale University      2001    
   2    BSc      Covington University 1998
   2    BEd      Kellog University    1995

Projects

pro_id  Title                         Year
------  ------                        ------   
   1    Social Networking             2003        
   1    Excavation of aquatic debris  2007    
   2    Design of solar radios        1992
   2    Development of expert systems 2011
  

我想检索每个人的所有信息,每个人在结果中只出现一次。有关资格和项目的信息应分别位于各自的列中(一列用于资格,另一列用于项目),并以逗号分隔。例如,上述样本数据的结果应为:



1  John James             MBA Wharton university 2002, LLB Yale University 2001                     Social Networking 2003, Excavation of aquatic debris 2007, Design of Solar panels 2008
2  King Fred              BSc Covington University 1998, BEd Kellog University 1995, Msc MIT 2011   Design of solar radios 1992, Development of expert systems 2011
3  Raymond Luxury-Yachts
  

目前,我有这样的疑问:

SELECT pro_id,
       surname,
       firstname,
       group_concat(degree,school,year) AS qual,
       concat(Title,year) AS work
FROM profile,
       LEFT JOIN qualification
           ON qualification.pro_id = profile.pro_id 
       JOIN projects
           ON projects.pro_id = profile.pro_id 
GROUP BY pro_id

对于示例数据,此查询结果为:



1  John James MBA  Wharton university 2002,  Social Networking 2003 
1  John James LLB  Yale University 2001, Excavation of aquatic debris 2007
1  John James MBA  Wharton university 2002,  Social Networking 2003, Excavation of aquatic debris 2007
etc
  

注意:Raymond Luxury-Yachts 未出现在当前结果中。

我不想要重复的结果记录。此外,如果姓氏在资格和项目表中没有任何条目,我希望查询返回姓名并在资格和项目表中显示一个空字段,而不是完全忽略它们。


将 LEFT JOIN 替换为 JOIN

Select pro_id, surname, firstname, group_concat(degree,school,year) as qual,concat(Title,year) as work 
from profile
join qualification on qualification.pro_id = profile.pro_id 
join projects on projects.pro_id = profile.pro_id group by pro_id

“内连接”和“外连接”有什么区别? https://stackoverflow.com/questions/38549/sql-difference-between-inner-and-outer-join

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将多个表中的数据获取到单行中,同时连接一些值 的相关文章

  • PHP - 简单嵌套无序列表 (UL) 数组

    我在 stackoverflow 上看到了这个嵌套 UL 数组问题的一些变体 但我认为我的比其他问题更简单 我正在寻找一个简单的数组循环 它允许无限量的主题 父项 和无限量的项目 子项 例如 ul li Topic li ul li Ite
  • MySQL:不喜欢

    我的数据库中有这些文本 categories posts categories news posts add news add 我不想选择带有categories 我使用这样的查询 SELECT FROM developer configu
  • 如果值不为空,则更新数据库的 SQL 查询?

    我有一个大约有 17 个字段的表 我需要在此表中执行频繁更新 但问题是每次我可能只更新几个字段 在这种情况下编写更新查询的最佳方法是什么 我正在寻找一个选项 其中仅当值不为空时才会更新 例如 我在数据库中有四个字段 A B C D 用户更新
  • 如何在 SQL Server 中引用触发器的“新”、“旧”行?

    所以我是 SQLite 的 SQL Server 新手 我习惯使用 New Old 关键字 我看到有些人使用insertedvalue 引用新创建的行 但这仅适用于插入而不适用于更新 我能得到类似的东西吗New我在这个查询中使用 creat
  • SQL Server 上的聚合(分组依据)如何工作?

    SQL Server如何实现group by子句 聚合 以执行计划作为灵感这个问题的 https stackoverflow com questions 1465827 select at onece query select p id D
  • 何时关闭 Android 上的数据库连接?每次操作完成后或应用程序退出后

    我有一个 Android 应用程序 经常访问本地 sqlite3 数据库 出于性能考虑 所以我始终保持连接打开 但我的一位朋友建议我在每次操作时打开 关闭连接 1 你们对这两种方法有何看法 缺点 优点 2 我做了一些测试 发现数据库连接没有
  • SQL 中WITH 子句的使用指南

    我了解如何使用WITH递归查询子句 但我在理解它的一般用途 功能时遇到问题 例如 以下查询更新一条记录 其 id 是通过使用按时间戳返回第一条记录 id 的子查询来确定的 update global prospect psp set sta
  • 如何在多个数据库的表之间移动数据,同时保持外键关系/引用完整性?

    我正在尝试找出将多个数据库中的几个数据表移动 合并到一个数据库中的最佳方法 我有一个类似于以下的架构 CREATE TABLE Products ProductID int IDENTITY 1 1 NOT NULL Name varcha
  • 对许多站点使用中央数据库服务器:合理吗?

    基本上 我需要在多达几十个站点上同步数据库数据的某些部分 完美的解决方案是创建一个中央服务器来托管该数据 每个页面加载都必须从两个数据库服务器 本地和远程数据库服务器 获取数据 并且写入远程服务器也很常见 虽然数据库服务器在硬件方面可以达到
  • C# 从数据库加载单词并将它们添加到“选择”类型的列表中?

    我构建了一个从数据库表加载单词的系统 但我需要将这些单词添加到 选择 类型 语法构建所需的类型 列表中 这是我请求从数据库检索单词的代码 List
  • 有人知道一个像样的免费数据库模式逆向工程工具吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 寻找一种工具 可以自动从实时数据库创建 MySQL 数据库模式的图形表示 显示表 列和关系 ER 图 理想情况下 在 OS X 上运行的东
  • SQL仅选择列上具有最大值的行[重复]

    想要改进这篇文章吗 提供此问题的详细答案 包括引用和解释为什么你的答案是正确的 不够详细的答案可能会被编辑或删除 这个问题在这里已经有答案了 我有这个文件表 这里是简化版本 id rev content 1 1 2 1 1 2 1 3 如何
  • 在准备好的语句中使用“like”通配符

    我正在使用准备好的语句来执行 mysql 数据库查询 我想实现基于某种关键字的搜索功能 为此我需要使用LIKE关键字 我知道的就这么多 我以前也使用过准备好的语句 但我不知道如何使用它LIKE因为从下面的代码中我将在哪里添加 keyword
  • 在 MySQL 中使用 BLOB 或 VARBINARY 加密数据?

    我正在开发一个 PHP 应用程序 它通过文本区域接受用户输入 它将加密存储在数据库中 使用 AES ENCRYPT 我应该使用 BLOB 还是 VARBINARY 字段 这两种类型的字段都会对性能产生影响吗 BLOB 和 VARBINARY
  • 数据库(database/database.sqlite)不存在。来自工匠修补匠的数据库作品

    我在中创建了database sqlite文件database文件夹 我的 env文件内容是 DB CONNECTION sqlite DB HOST 127 0 0 1 DB PORT 3306 DB DATABASE absolute
  • 将 SQL 查询的 SELECT 子句解析为 PHP 数组

    这更多的是用于分析 PHP 中的查询before它被发送到服务器 我这样做的原因非常复杂 所以我不想深究其原因 在 PHP 中 我需要将字段选择存储到 PHP 数组中 以这个查询为例 SELECT user id username DATE
  • 如何在 JPA/Hibernate 中执行本机 SQL 脚本?

    我有一个带有数据库转储的 SQL 脚本 我如何使用 Hibernate 执行它EntityManager 我这样尝试过 EntityManager manager getEntityManager Query q manager creat
  • MySQL:进行基本搜索

    我的数据库中有一个名称表 我希望对其进行模糊搜索 例如我的数据库包含 Name ID John Smith 1 Edward Smith 2 Gabriel Gray 3 Paul Roberts 4 目前 当我通过 python 搜索数据
  • 实施数据库——如何开始

    我已经尝试学习编程有一段时间了 我学过 Java 和 Python 并且对它们的语法很满意 最近 我想利用我所学到的知识从头开始编写有形的软件 我想实现一个数据库引擎 类似于 NoSQL 数据库 我整理了一份小文档 类似于我在编码过程中遵循
  • 依靠条件连接大表的速度很慢

    当表很小时 这个查询有合理的时间 我试图找出瓶颈是什么 但我不知道如何分析EXPLAIN结果 SELECT COUNT FROM performance analyses INNER JOIN total sales ON total sa

随机推荐