所以我试图在php中实现一个join,但是我不知道如何在查询中包含带有join的where子句。
我想做的是:
SELECT SpecialFacts.ConservationStatus, SpecialFacts.Reproduction, SpecialFacts.Length, Habitat.Type, Habitat.located
FROM SpecialFacts
INNER JOIN Habitat ON SpecialFacts.SpeciesID=Habitat.SpeciesID
WHERE SpeciesID="G. cuvier"
基本上,我试图确保连接发生在speciesid为g的表上。cuvier,但我到目前为止所尝试的一切都不起作用,它现在给我的错误是“where子句中的column speciesid是含糊不清的”。
以下是我的相关php代码:
<?php
include 'connect.php';
$result = mysqli_query($connect,"SELECT SpecialFacts.ConservationStatus, SpecialFacts.Reproduction, SpecialFacts.Length, Habitat.Type, Habitat.located FROM SpecialFacts INNER JOIN Habitat ON SpecialFacts.SpeciesID=Habitat.SpeciesID WHERE SpeciesID='G. cuvier'") or die("fail" . mysqli_error($connect));
$i = 0;
while($row = mysqli_fetch_array($result))
{
echo $row[$i];
$i = $i + 1;
}
3条答案
按热度按时间von4xj4u1#
改用下面的查询
我使用了单引号和列名与表名。
vnzz0bqm2#
它不会因为你在使用
WHERE
不正确。这是因为在您的查询中有多个表有一个同名的列,因此出现了“不明确”错误。您只需要通过将表名添加到标识符来消除歧义。或
因为您是对该列上的表进行内部连接,所以任何一个表都应该适用于where子句。出于性能原因,我建议使用较小的表,但老实说,我不能100%确定它是否重要。你能做到的
EXPLAIN
看看他们是如何比较的。y4ekin9u3#
列
SpeciesID
在两个表中都存在,所以它不知道哪些需要与给定的值进行比较G. cuvier
. 当您将每个列名作为带点(.)的表名写入时,where condition列中应该是相同的SpecialFacts.SpeciesID = "G. cuvier"
.所以查询应该是这样的: