簡體   English   中英

在同一張桌子上的兩個聯接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM