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

Php 用一个表连接两个表,其中一个表有多行匹配,php,mysql,database,join,Php,Mysql,Database,Join,试图弄清楚是否可以创建一个查询,其中连接表,表1小于表2,表2有多个引用匹配表1条目,查询将输出一个连接,其中保留表1长度,但只添加更多列。不确定这是否有意义,所以这里有一个我所追求的例子 Table One Table two +-----------------------------+ +-----------------------------+ | id | english | definitio

试图弄清楚是否可以创建一个查询,其中连接表,表1小于表2,表2有多个引用匹配表1条目,查询将输出一个连接,其中保留表1长度,但只添加更多列。不确定这是否有意义,所以这里有一个我所追求的例子

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和MySql

更新

继续使用我的原始查询,并使用PHP处理结果,从而获得良好的性能。如果您需要我发布代码,请告诉我

您可能正在寻找


我冒着被否决的风险说答案是否定的。原因很简单,因为列的数量未知(比如,如果你在最上面的单词中再添加一个句子,你可能会在结果集中再添加一个列),而且每一列都没有很好的定义(为什么blahblah4应该在列句子中而不是在第2行?)

在我看来,SQL是用来告诉你想要得到什么,但在这种情况下,SQL无法准确地告诉你想要什么


即使可以做到这一点(我很愿意学习),我相信复杂性抵消了任何好处,用PHP处理这一点是一个更好的选择。

在我看来,您试图实现的是某种透视表。看看这个:作为一个例子。但考虑到数据的组织方式,我认为这是行不通的。我建议继续使用原始查询并在PHP代码中格式化结果。要在MySQL中获得所需的结果,需要知道(a)每个
Table1.ID的最大句子数,以及(2)如何对句子排序。即使您有这些信息,这也是一个极其复杂的查询。当您使用带有
左连接的
GROUP\u CONCAT
时,您还需要使用
GROUP BY
语句,以便获得不需要
GROUP\u CONCAT
的行(如果有意义的话)。基本上没有了
GROUP BY
语句,它将我的左连接变成了一个内部连接。我知道这个问题很久以前就得到了回答,但关于这个主题,我有一个自己的问题。当我使用这个GROUP_CONCAT函数时,我将如何“和word_id NOT IN(1,2,3)”?将过滤后的数据设置到结果集中。将组_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