[英]Two JOINS on same table
我在一个网站上工作,该网站在我的数据库中显示了两支球队的足球得分和两分。
这是我的代码:
<?php
$result = mysql_query( "SELECT * FROM resultat
LEFT JOIN brukere ON resultat.dommer = brukere.id
INNER JOIN lag ON resultat.lag1 = lag.id
INNER JOIN lag ON resultat.lag2 = lag.id
ORDER BY slutt DESC
" )
or die("SELECT Error: ".mysql_error());
$num_rows = mysql_num_rows($result);if ($result) {while ($row = mysql_fetch_array($result)) {
$_SESSION['id']=$row['id'];
?>
<tr>
<td><?php echo $row['klubb']; ?></td>
<td><?php echo $row['klubb']; ?></td>
<td><?php echo $row['stilling1'] . " - " . $row['stilling2']; ?></td>
<td><?php echo $row['roed'] . " rødt og " . $row['gult'] . " gult"; ?></td>
<td><?php echo $row['bane']; ?></td>
<td><?php echo $row['navn']; ?></td>
</tr>
<?php
}
}
?>
我得到:
选择错误:不是唯一的表/别名:'滞后'
当我尝试:
INNER JOIN lag s ON resultat.lag1 = lag.id
INNER JOIN lag c ON resultat.lag2 = lag.id
我得到:
SELECT错误:“ on子句”中的未知列“ lag.id”
我该怎么做? 来自同一表的两个联接
您需要使用刚赋予表lag
的别名。 您在第一次加入时分配了s
,在第二次加入时分配了c
,因此您应该使用它们
INNER JOIN lag s ON resultat.lag1 = s.id
INNER JOIN lag c ON resultat.lag2 = c.id
您可以尝试将JOIN这样合并:
INNER JOIN lag ON resultat.lag1 = lag.id OR resultat.lag2 = lag.id
如果需要,请用AND替换OR
这是一个自联接,并且在expession中需要别名:
INNER JOIN lag s ON resultat.lag1 = s.id
INNER JOIN lag c ON resultat.lag2 = c.id
通常,您将自连接与邻接列表一起使用,并将树沿维度移动:
SELECT t1.name AS lev1, t2.name as lev2, t3.name as lev3, t4.name as lev4
FROM category AS t1
LEFT JOIN category AS t2 ON t2.parent = t1.category_id
LEFT JOIN category AS t3 ON t3.parent = t2.category_id
LEFT JOIN category AS t4 ON t4.parent = t3.category_id
WHERE t1.parent is NULL
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.