【发布时间】:2016-05-02 20:36:40
【问题描述】:
我有一个 mysql 查询,它已经离开加入另一个表并且工作正常。我现在不得不离开加入另一张桌子。起初,这似乎也有效。 但问题是:我匹配连接的值在一个表中是单数/索引的,但在另一张表上它出现乘数。 我很不擅长表达这一点,即使这是一个相当简单的设置。
所以我做了一个小提琴来形象化我的意思:https://jsfiddle.net/fesoLvy4/2/
当我现在执行我通常的左连接例程并将 mysql_query 放入 PHP 中时:
<?php
echo " <table>
<tr>
<th>Dog</th>
<th>Species</th>
<th>Properties</th>
</tr>";
while($data = mysql_fetch_row($mysql_leftjoin_query)){
echo " <tr>
<td>$data[0]</td>
<td>$data[1]</td>
<td>$data[2]</td>
</tr>
</table>"; }
?>
只有左连接表的第一个条目进入表 - $data[3] 只包含匹配的第二个表的第一个值,但我想要 $data[3] 中匹配的所有条目。请看一下小提琴,我很难用语言表达,但我认为这是一个非常简单的设置。 我认为这与 php 的 mysql_fetch_row 有关,但我不能指望它。
为了完整起见,这是我的 MySQL 查询(简化):
$mysql_leftjoin_query = mysql_query("SELECT MASTER.animal, MASTER.species, BI.properties
FROM `XYZ_MASTER` MASTER
LEFT JOIN `XYZ_BOARD_INFO` BI
ON (MASTER.animal = BI.animal)");
现在,BI.properties 应该计算 MASTER.animal 和 BI.animal 匹配的所有 BI 条目,而不仅仅是第一个条目。
【问题讨论】:
-
您是否尝试执行您的
php代码?应该有echo吗? -
左连接按预期工作。见fiddle。但是您提供的 PHP 代码无效。它无法运行。
-
不,我很抱歉@akasummer,我的错,我没有提供整个 php 并简化了它,所以它更容易阅读(否则它非常详尽)。 php 工作正常,正如我所说,我能够得到我想要的结果 - 除了我只得到与“加入”值匹配的第二个表的第一个值。
-
@trincot 抱歉,这是我的错。我为这篇文章简化了 php,因为它非常广泛。 php 是完全有效的(在原版中) - 我有一个结构问题!如果您好心,请看小提琴,那里描述了我的问题。我如何雕刻查询,以便在一个表中有一个索引值,但在另一个表中有多个对应项。我想要所有的多个对应物,而不仅仅是第一行。
-
请检查我的小提琴。它表明左连接工作正常。你没有在你的问题中证明你有任何其他结果。请提供实际重现问题的代码。您的小提琴实际上只是三个表格的呈现,但这只是硬编码。如果您像在 PHP 代码中那样执行 SQL,它确实会从左连接表返回多个值。