Собираете значение из одной таблицы и используете его во втором запросе?

1

Хорошо, это будет казаться глупым, однако, имея некоторые трудности в лучшем способе сделать это; Я пытаюсь захватить всех пользователей, за которыми следует учетная запись; то, как только я захватил всех пользователей, которых я следую из следующей таблицы, возьмите информацию о пользователе для таблицы пользователей. это то, что у меня есть до сих пор, но это действительно грязно и не работает.

<?
$usr_id = '34';

$sql = "SELECT * FROM following WHERE usr_id = '$usr_id'";
$result = mysql_query($sql);
// $following is the users that we are following.
while ($row = mysql_fetch_assoc($result)) {

        $following = $row['following'];

$src = "SELECT * FROM usr_users WHERE username = '$following'";
$getfollowinginfo = mysql_query($src);

while ($user = mysql_fetch_assoc($getfollowinginfo)) { 

        echo $user['email'];

}}
?>
  • 1
    В какой момент код перестает работать?
  • 0
    @DiddleDot это только повторяет один результат. когда есть 4 человека, я следую.
Показать ещё 7 комментариев
Теги:

1 ответ

0
Лучший ответ

Как отмечают другие, здесь более подходящим является JOIN. На основе вашего примера, вот простой скрипт SQL, показывающий, как он работает.

Самая важная часть - таргетинг на Following таблицу, а затем JOIN ing в таблицу Users, например:

SELECT u.id, u.name
FROM Following f
JOIN Users u on u.id=f.following
WHERE f.userId = 3 -- Can be any identifier for the user.

Для небольших или простых наборов данных это прекрасно, но некоторые могут предложить вам удалить WHERE и вместо этого расширить условие JOIN, например:

SELECT u.id, u.name
FROM Following f
JOIN Users u on u.id=f.following
    AND f.userId = 3 -- Can be any identifier for the user.

Чтобы интегрировать это в ваш код, это так же просто, как это;

<?
    $usr_id = '34';

    $sql = "SELECT u.id, u.email FROM following f JOIN usr_users u on u.id=f.following AND f.usr_id = '$usr_id'";
    $result = mysql_query($sql);

    while ($user = mysql_fetch_assoc($result )) {
        echo $user['email'];
    }
?>
  • 0
    очень полезно и спасибо за интеграцию и объяснение того, как использовать объединение, это действительно полезно и означает, что я могу использовать его в будущих проектах. благодарю вас.
  • 0
    Нет проблем, рад, что смог помочь!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню