Задать вопрос

Как сделать правильную выборку с двух таблиц?

Здравствуйте, подскажите как правильно сделать?

Есть база "data1" с таблицей "wp_users" и строкой "user_login" ;
Есть база "data2" с таблицей "money" и строкой "username" и "balance" ;
Поля "user_login" и "username" хоть и в разных таблицах, но они одинаковые.

Как cделать выборку, чтобы "user_login" выбрал "username" и посмотрел какое значение в строке "balance" и вывел его в переменную?
Есть наброски, которые не работают.
<?php 
$db = mysql_connect('localhost','root','pass');
$data1 = 'e_mc';
$data2 = 'e_mcdata';
$query1 = "SELECT `user_login` FROM `wp_users`";
$select1 = mysqli_query($data1,$query1);
while($r1 = mysqli_fetch_array($select1);){
    $user_login = $r1['user_login'];
    $query2 = "SELECT `username`, `balance` FROM `money` WHERE `username` = '$user_login'";
    $select2 = mysqli_query($data2,$query2);
    $r2 = mysqli_fetch_array($select2, MYSQLI_ASSOC);
    echo $r2['balance'];
}
?>
 
На счету: <?php echo $r2['balance']; ?>
  • Вопрос задан
  • 352 просмотра
Подписаться 4 Оценить 3 комментария
Пригласить эксперта
Ответы на вопрос 4
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
mysql_query($data1,$query1);
Я не очень понял что Вы пытаетесь сделать этим кодом :)
php.net/manual/ru/function.mysql-query.php

Решений собственно 2
1) Если обе базы находятся на 1м сервере - можно перед соответствующим запросом делать mysql_select_db на нужную базу.
2) Если находятся на разных серверах - можно открыть 2 соединения к базам и вызывать query передавая вторым аргументом линк на соединение полученный из connect.

PS лучше писать сразу на mysqli_, mysql_ начиная с версии 5.5.0 deprecated, будут проблемы на нормальных хостингах.
Ответ написан
@kryvel
Системный администратор
Вы в запросе не подставляете $user_login
Попробуйте так
$query2 = "SELECT `username`, `balance` FROM `money` WHERE `username` = '" . $user_login . "'";
Ответ написан
Если я правильно прочитал код, он находит баланс для всех пользователей, а выводит - только для самого последнего.

Если требуется баланс конкретного пользователя, то цикл не нужен. Достаточно подставить в $query2 логин именно этого пользователя.

Если нужно увидеть баланс всех пользователей, то вывод баланса нужно поставить внутрь цикла.
Ответ написан
@vadikjust
Попробуйте LEFT JOIN
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы