[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Выборка из двух таблиц
Vulkan
Здравствуйте, возникла заковырка, выборка из двух таблиц не получается, структуры таблиц, следующие:
таблица friends:
  • z_id - идентификатор записи о новой дружбе между двумы пользователями
  • id - ид пользователя который подружился
  • friend_id - ид друга, с которым подружился id
  • new - новый друг или нет
  • date - дата добавления в друзья
таблица login:
  • id -
  • username
  • password
  • fname
  • sname
  • birth_date
  • country
  • city


//Считывание id друга у определённого пользователя из таблицы friends
<?php
include 'sql.php';
$sql = "SELECT id, friend_id, date, new, z_id FROM friends WHERE id='$user_id' and new='no'";
$result = mysql_query($sql)or die(mysql_error());
$row=mysql_fetch_assoc($result);
$friend_id=$row['friend_id'];
//

//Считывание информации из второй таблицы login по id друга

$sqlnl = "SELECT username, sname, fname, birth_date, country, city FROM login WHERE id='$friend_id'";
$result = mysql_query($sqlnl)or die(mysql_error());
$rows=mysql_fetch_assoc($result);
$f_username=$rows['username'];
$r_name=$rows['sname'];
$r_familiya=$rows['fname'];
$birthdate=$rows['birth_date'];
$country=$rows['country'];
$city=$rows['city'];
//

//А тут уже идёт вывод друзей с инфой извлечённой из второй таблицы

$sqlfr = "SELECT id, friend_id, date, new, z_id FROM friends WHERE id='$user_id' and new='no' order by date desc";
$result = mysql_query($sqlfr)or die(mysql_error());
while($r=mysql_fetch_assoc($result))
{
echo "$r_name $r_familiya".'<BR>';
echo "$country, г.$city".'<BR>';
echo " ".$r['friend_id'].'<BR>';
echo " <a href='delete_friend_z.php?id=".$r['z_id']."'>Удалить</a>".'<BR>';
}
//
?>


В итоге выводит друзей, но с одинаковой инфой у всех друзей, причём если сделать вывод id у каждого друга, то у каждого он разный, а вот инфа одна и также (инфа о друге из таблицы).
Подскажите пожалуйста, я перебровал разные варианты не помогает.



Спустя 2 часа, 9 минут, 45 секунд (23.04.2010 - 19:19) andrey написал(а):
Не пойму, у юзера только один друг или несколько? Если выводишь в цикле видимо несколько. А почему считывание информации происходит не в цикле, а только для одного друга? Вот и получаешь одинаковую информацию для всех друзей...

Спустя 9 часов, 24 минуты, 48 секунд (24.04.2010 - 04:44) Vulkan написал(а):
Да, несколько, сейчас попробую сделать считывание инфы в цикле, спасибо за подсказку smile.gif.

Спустя 1 час, 27 минут, 55 секунд (24.04.2010 - 06:12) Vulkan написал(а):
Сделал вывод в цикле:

//Считывание id друга у определённого пользователя из таблицы friends
<?php
include 'sql.php';
$sql = "SELECT id, friend_id, date, new, z_id FROM friends WHERE id='$user_id' and new='no'";
$result = mysql_query($sql)or die(mysql_error());
while($row=mysql_fetch_assoc($result))
{
$friend_id=$row['friend_id'];
}
//

//Считывание информации из второй таблицы login по id друга

$sqlnl = "SELECT username, sname, fname, birth_date, country, city FROM login WHERE id='$friend_id'";
$result = mysql_query($sqlnl)or die(mysql_error());
while($rows=mysql_fetch_assoc($result))
{
$f_username=$rows['username'];
$r_name=$rows['sname'];
$r_familiya=$rows['fname'];
$birthdate=$rows['birth_date'];
$country=$rows['country'];
$city=$rows['city'];
}
//

//А тут уже идёт вывод друзей с инфой извлечённой из второй таблицы

$sqlfr = "SELECT id, friend_id, date, new, z_id FROM friends WHERE id='$user_id' and new='no' order by date desc";
$result = mysql_query($sqlfr)or die(mysql_error());
while($r=mysql_fetch_assoc($result))
{
echo "$r_name $r_familiya".'<BR>';
echo "$country, г.$city".'<BR>';
echo " ".$r['friend_id'].'<BR>';
echo " <a href='delete_friend_z.php?id=".$r['z_id']."'>Удалить</a>".'<BR>';
}//
?>


Не получается, friend_id из первого Select-запроса берётся для каждого пользователя свой, это то что надо, а вот данные выводятся всё равно по первому ид, т.е. одинаковые для кажого пользователя...

Спустя 5 часов, 11 минут, 31 секунда (24.04.2010 - 11:24) cyberx написал(а):
Тебе тип этого?

$friends = mysql_query("SELECT `friend_author` FROM `friends` WHERE `friend_address` = '$id'
UNION DISTINCT
SELECT `friend_address` FROM `friends` WHERE `friend_author` = '
$id'",db) or die(mysql_error());
while($my_friends = mysql_fetch_assoc($friends))
{
$friend_id = $my_friends['friend_author'];
// $friend_id - это уже id твоих друзей
}


У меня тип этого, id кто послал приглашение на дружбу и id кто принял. В цикле выводится id моих друзей без повторения

Спустя 5 часов, 21 минута, 14 секунд (24.04.2010 - 16:45) Vulkan написал(а):
Нет, не проходит выводит ошибку, ну это не то что мне надо, но всё равно спасибо. Вот сократил код, это код который выводит одного друга, даже если их два:

<?php
include 'sql.php';
//Запрашивает id друзей, который дружит с пользователем
$sql = "SELECT id, friend_id, date, new, z_id FROM friends WHERE id='$user_id' and new='no'";
$result = mysql_query($sql)or die(mysql_error());
while($row=mysql_fetch_assoc($result))
{
$friend_id=$row['friend_id'];
}
//

//Запрашивает инфу по id друзей из второй таблицы

$sqlnl = "SELECT username, sname, fname, birth_date, country, city FROM login WHERE id='$friend_id'";
$result = mysql_query($sqlnl)or die(mysql_error());
while($rows=mysql_fetch_assoc($result))
{
$f_username=$rows['username'];
$r_name=$rows['sname'];
$r_familiya=$rows['fname'];
$birthdate=$rows['birth_date'];
$country=$rows['country'];
$city=$rows['city'];
echo "$f_username";
}
?>


Тут остаётся маленькая заковырочка, например что то добавить в выборку, чтобы она перепровяряла всё ли она вывела после вывода друга например...

Спустя 22 минуты, 21 секунда (24.04.2010 - 17:07) Vulkan написал(а):
я решил проблему)))


$sql = "SELECT friends.id, friends.friend_id, friends.date, friends.new, friends.z_id, login.sname, login.id FROM friends LEFT
JOIN login ON (friends.friend_id=login.id)
WHERE friends.id='
$user_id' and friends.new='no'";
$result = mysql_query($sql)or die(mysql_error());
while($r=mysql_fetch_assoc($result))
{
$f_username=$r['sname'];
echo "$f_username";


Всё выводится идеально, без повторений и выводятся все друзья))!! Спасибо всем кто помогал)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.