Внутреннее объединение несколько раз на одной и той же таблице в одном и том же столбце - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть две mySQL таблицы:

1: id, агент, промоутер, promoterrank, prevrank, newrank, promotime

2: id, ранг

newrank и звания промоутеров - это INTS, которые соответствуют идентификатору в таблице 2 (например, стажер = 2, руководитель = 4 и т. д. c ...)

Я пытаюсь присоединиться к A и B в способ, которым я могу показать фактическое имя ранга в отличие от идентификатора, связанного с рангом. Я успешно сделал это для newrank, но независимо от того, что я пытаюсь сделать для promoranrank, это просто не работает. Я ценю всю помощь.

Это запрос 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>

1 Ответ

1 голос
/ 29 апреля 2020

Вы хотите декодировать два значения для ранга (один для 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

в любом случае вам следует избегать использования php var в sql коде .. (вы рискуете получить sqlinjection), поэтому взгляните на подготовленный оператор и обязательный параметр

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...