0

我有一个连接两个表的 mysql 数据库的查询。在第一个表中,它只是根据 id 提取记录。对于第二个表,可能有也可能没有基于第一个表中的值的匹配项。如果有任何匹配项,我想获得匹配项,否则,结果记录集的那些值可能是空的。

该查询似乎产生了正确数量的记录。但是,当我尝试访问一些应该存在的变量的值时,我什么也得不到,要么是因为我可能将它们称为错误的名称,要么它们以某种方式不在记录集中。我对mysql查询有点模糊,所以非常感谢任何建议..

表1公园

id | name | stateid 

表2 参观过的公园

id | visited | parkid | userid

PHP 脚本

$sql = "SELECT * 
FROM `parks` p
LEFT JOIN `parksvisited` pv
ON p.id = pv.parkid
WHERE p.stateid = '44'"

运行查询...

while($row = mysql_fetch_array($res))
{
if ($row['visited'] == 1) {
$visited = 1; }  
else {
$visited = 0; }
<a href="javascript:void(0);" onclick="loadParks(\''.$row['stateid'].'\',\''.$row['p.id'].'\',\''.$visited.'\');">Visited</a>

}

基本上,我得到了 stateid,但我没有得到 p.id 或访问过。可能是我将它们命名错误,或者它们可能以某种方式被排除在结果之外......感谢您的任何建议。

4

1 回答 1

1

p.id可能会丢失,因为每个p.idpv.id都将返回为id,而不是p.idpv.id。试试这个:

SELECT p.id pid,
       p.*,
       pv.id pvid,
       pv.*
FROM `parks` p
LEFT JOIN `parksvisited` pv
ON p.id = pv.parkid
WHERE p.stateid = '44'

看起来您也没有从pv原始查询中选择任何内容,只是p. 看看这个新查询是否也能处理visited好。并确保引用pid$row['pid'],而不是$row['p.id']

于 2012-07-10T13:42:53.817 回答