簡體   English   中英

在同一列的同一張表上多次內連接

[英]Inner join multiple times on same table on same column

我有兩個 mySQL 表:

1:id、代理、發起人、promoterrank、prevrank、newrank、promotiontime

2:id,等級

newrank 和promoter rank 是與表2 中的ID 對應的INTS(例如:Trainee = 2、Supervisor = 4 等...)

我正在嘗試以一種可以顯示等級的實際名稱而不是與等級相關的 ID 的方式將 A 連接到 B。 我已經成功地為 newrank 做到了這一點,但無論我嘗試為promoterrank 做什么,它都不起作用。 我感謝所有的幫助。

這是 SQL 查詢我使用:

SELECT A.*,B.rank as brank,DATE_FORMAT(promotiontime, '%Y-%m-%dT%H:%i:%s0Z') FROM promotions A 
INNER JOIN ranks B ON A.newrank = B.id 
WHERE agent='".$_POST['agent']."' ORDER BY id DESC

還有我的 PHP:

<td><?php echo $row['brank']; ?></td>
<td><a href="profile.php?user=<?php echo $row['promoter']; ?>"><?php echo $row['promoter']; ?></a></td>
<td><?php echo $row['promoterrank']; ?></td>

您想要解碼兩個等級值(一個用於 newrank ,一個用於promoterrank ),那么您應該兩次加入該表等級,例如:

    SELECT A.*
      , B.rank as newrank
      , C.rank as promoterrank
      DATE_FORMAT(promotiontime, '%Y-%m-%dT%H:%i:%s0Z') 
    FROM promotions A 
    INNER JOIN ranks B ON A.newrank = B.id 
    INNER JOIN ranks C ON A.promoterrank = C.id
    WHERE agent='".$_POST['agent']."' ORDER BY id DESC

無論如何,您應該避免在 sql 代碼中使用 php var ..(您有 sqlinjection 的風險)所以看看准備好的語句和綁定參數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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