Как заменить номера идентификаторов именами, поскольку столбцы не соединяются напрямую?(PHP / MySQL) - PullRequest
1 голос
/ 13 августа 2011

Допустим, у вас есть база данных с двумя таблицами с именами «клиенты» и «рефералы».

Клиенты TABLE имеют два столбца: «id» и «name».
У ссылок TABLE также есть два столбца: «id» и «refer_by»

Оба столбца «id»: PRIMARY_KEY, AUTO_INCREMENT, NOT_NULL

Клиенты TABLE имеют три строки:

1 | Jack  
2 | Frank  
3 | Hank  

TABLE рефералов также имеет три строки:

1 | 0  
2 | 1  
3 | 2  

Это означает, что Джек является клиентом 1 и никого не отсылал; Фрэнк - клиент 2 и был отослан Джеком; Хэнк - это клиент № 3, указанный Фрэнком.

Команда SELECT, которую я использовал для отображения значения выше, была:

mysql_query("SELECT clients.id, clients.name, referrals.referred_by FROM clients INNER JOIN referrals ON clients.id=referrals.id");

while ($row = mysql_fetch_array($result))
{
    echo $row['id'] . " " . $row['name'] . " " . $row['referred_by'] . "<br>";
}

Какие выходы:

1 Jack 0  
2 Frank 1  
3 Hank 2  

Теперь реальный вопрос:

Как мне изменить код, чтобы он выводил имя реферера вместо их идентификатора?

То есть, это должно выглядеть так:

1 Jack  
2 Frank Jack  
3 Hank Frank

Заранее спасибо ~

Редактировать: Обязательно упомяните, как я должен обновить массив, так как я потерян, как я должен обновить всю эту строку эха.

1 Ответ

4 голосов
/ 13 августа 2011

Вы почти на месте - вам просто нужно снова присоединиться к таблице клиентов, чтобы получить имя реферера:

mysql_query("SELECT clients.id, clients.name, rclients.name as referred_by
FROM clients 
INNER JOIN referrals ON clients.id=referrals.id
LEFT JOIN clients as rclients ON referrals.referred_by = rclients.id");

while ($row = mysql_fetch_array($result))
{
    echo $row['id'] . " " . $row['name'] . " " . $row['referred_by'] . "<br>";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...