当前位置: 首页 > 知识库问答 >
问题:

连接两个表,其中一个表有多行匹配

仉联
2023-03-14

试图确定是否可以创建一个连接表的查询,表一比表二小,表二有多个匹配表一条目的引用,查询将输出一个连接,其中表一的长度保留,但您只需添加更多列。我不确定这是否有意义,所以这里是我想要的一个例子

Table One                                  Table two
+-----------------------------+           +-----------------------------+
| id | english  |  definition |           | id | word_id  |  sentence   |
+-----------------------------+           +-----------------------------+
|1   |    A1    |    blah     |           |1   |    1    |   blahblah1  |
|2   |    B4    |    blah2    |           |2   |    1    |   blahblah2  |
+-----------------------------+           |3   |    1    |   blahblah3  |
                                          |4   |    2    |   blahblah4  |
                                          |5   |    2    |   blahblah5  |
                                          +-----------------------------+
+----------------------------------------------------------------+
| id | english  |  definition | sentence | sentence2 | sentence3 | 
+----------------------------------------------------------------+
|1   |    A1    |    blah     | blahblah1|  blahblah2| blahblah3 |
|2   |    B4    |    blah2    | blahblah4|  blahblah5|           |
+----------------------------------------------------------------+
$query = "SELECT * FROM T1 INNER JOIN T2 ON T1.id = T2.word_id";
+----------------------------------------+
| id | english  |  definition | sentence |
+----------------------------------------+
|1   |    A1    |    blah     | blahblah1|
|1   |    A1    |    blah     | blahblah2|
|1   |    A1    |    blah     | blahblah3| 
|2   |    B4    |    blah2    | blahblah4|
|2   |    B4    |    blah2    | blahblah5|
+----------------------------------------+

更新!!

保持原来的查询并使用PHP处理结果,也获得了很好的性能。让我知道如果你需要我张贴我的代码。

共有1个答案

岳劲
2023-03-14

您可能正在查找GROUP_CONCAT()

SELECT T1.id, T1.english,T1.definition,
GROUP_CONCAT(T2.sentence ORDER BY T2.ID SEPARATOR '|') 
FROM Table1 T1 INNER JOIN Table2 T2 ON T1.id = T2.word_id
Group by word_id

小提琴样品

 类似资料:
  • 它重复显示每个房间类型的酒店名称匹配该酒店id,但我想显示所有房间类型的酒店名称一次。我怎样才能做到这一点? 谢谢。

  • 问题内容: 我有两个要从中提取数据的表。这是我所拥有的最小的娱乐: 因此,发生的事情是我最终要为每个Job_Number的每个不同的Charge_Code和Charge_Amount获取一行。该行上的其他所有内容都相同。是否有可能使它返回更类似的内容: 等等? 这样,它就为每个职位编号创建了一行,并且每个相关的费用和金额都在同一行上。我一直在阅读W3,但无法确切地说出这是否可行。有什么帮助,谢谢!

  • 问题是@ManyToOne@Joincolumn ID_REPORT(它是一个主键)和@Joincolumn ID_TEMPLATE_DEFAULT 实体映射中的重复列:CurReport 列:id_report(应使用插入=“false”更新=“false”进行映射) 代码 第一桌CUR_TEMPLATE 第二个表CUR_REPORTS 第一个表CUR_REPORTS实体当前报表 第二个表CUR

  • 问题内容: 我有两个表,如下所示: 我想列出参加活动17的所有人(包括学生和教师)的名字。无论如何,我可以获得以下结果: 无需创建新表(仅使用表达式或派生关系的嵌套)? 在actid上加入JOIN会得到如下结果: 我想我需要一种串联形式? 问题答案: 您可能(或可能不需要)对ID不唯一的内容进行处理,例如

  • 我试图连接两个表,但似乎有一个问题,我寻找的输出是有主题的行量。

  • 我正在开发一个基于SAAS的站点,我必须将两个DBs中的两个表连接起来,比如说DB1中的table1和DB2中的table2。我必须使用cakephp中的join从表1和表2获取匹配记录,但它会抛出如下错误: 错误:SQLSTATE[42000]:语法错误或访问冲突:1142 SELECT命令拒绝用户'dbname'@'localhost'访问表'table_name'。 有谁能解释一下如何使用c