SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 17.08.2008 15:25:39

Борис
Завсегдатай
Зарегистрирован: 20.07.2008
Сообщений: 29

Проблема с запросом.....

Есть такой запрос:

Выбрать и показать всех юзеров, включая друзей и себя самого и их статус , которые находятся в сообществе "Ярые Алкаголики" - это так для обстановки! smile

При показе всех новых юзеров и соответственно себя

---------------------------      ---------------------------
|                                |    |                                 |
|                                |    |                                 |
|                                |    |                                 |
|    картинка               |   |       картинка             |
|                                |    |                                 |
|                                |    |                                 |
---------------------------     ----------------------------
      Имя и Фамилия                           Я
   Добавить в друзья

Если Это друг то мы убераем надпись Добавит в друзья и соответственно себя самого нельзя добавить :

---------------------------
|                                |
|                                |
|                                |
|    картинка               |
|                                |
|                                |
---------------------------
      Имя и Фамилия


Вот примерная реализация:


Код:

SELECT DISTINCT
mc_users.mc_surname,
mc_users.mc_name,
IF(friend.user_id,1,0) AS is_friend,
IF(session.users,1,0) AS is_online
FROM user_join_community LEFT JOIN session ON (session.users = user_join_community.joined_user)  LEFT JOIN friend ON (user_join_community.joined_user = friend.friend_id)LEFT JOIN mc_users ON (user_join_community.joined_user = mc_users.id)
WHERE
user_join_community.community_id =  '50' AND
friend.user_id =  '5'
ORDER BY putdate DESC

Подробно о таблицах:

mc_users - id, айди юзера. для того чтобы потом выбрать его имя и фамилию

session - в колонке users, находится id аналогичный как в тамлице mc_users,+ дата входа и сессия

user_join_community - сотоит из 3 колонок id, community_id, joined_user, что следует - community_id = 50 и юзер joined_user = адй юзера входяшего в сообщество 

friend - сотоит из 3 колонок id, friend_id, user_id ,id для сортировок ну и прочее... friend_id - айди друга, user_id = соответствено человек который добавил друга.

Вот сам php код:


Код:

<php?

function show_c($id,$chset,$u_id){

$query = "SELECT DISTINCT
mc_users.mc_surname,
mc_users.mc_name,
IF(friend.user_id,1,0) AS is_friend,
IF(session.users,1,0) AS is_online
FROM user_join_community LEFT JOIN session ON (session.users = user_join_community.joined_user)  LEFT JOIN friend ON (user_join_community.joined_user = friend.friend_id)LEFT JOIN mc_users ON (user_join_community.joined_user = mc_users.id)
WHERE
user_join_community.community_id =  '50' AND
friend.user_id =  '$id'
ORDER BY putdate DESC
 "; 




$result = mysql_query($query) or die ('asd');


$te = mysql_num_rows($result);
$fr .= "<table border=\"1\">";
for($i=1; $i<=$te; $i=$i+3){

$fr .= "<tr>";

for($j=$i; $j<($i+3); $j++){

$row = mysql_fetch_assoc($result);

   $fr .= "<td>";
   
   if ($row['is_online'] == '1'){

      $fr .= "<img src=\"images/test.jpg\" border=\"0\" /><br />
<img src=\"images/online2.gif\" border=\"0\" /><br />
<a href=\"cmd.php?view_friend=".$row['id']."\">".convert($row['mc_name'],$chset)." ".convert($row['mc_surname'],$chset)."</a><br/>";

      if($row['is_friend'] == '0'){
       $fr .= "<a href=\"cmd.php?add_to_friend=".$row['id']."\">add to</a><br/>";
      }
  
    }
    if($row['is_online'] == '0'){

  $fr .= "<img src=\"images/test.jpg\" border=\"0\" /><br /><a href=\"cmd.php?view_friend=".$row['id']."\">".convert($row['mc_name'],$chset)." ".convert($row['mc_surname'],$chset)."</a><br/>";
  
    if($row['is_friend'] == '0'){
       $fr .= "<a href=\"cmd.php?add_to_friend=".$row['id']."\">add to</a>";
      }
     
     }
   
    $fr .= "</td>";
    }
        
        
      $fr .=  "</tr>";
    }
    $fr .= "</table>";
return $fr;
}
?>

Хотелось бы разобратся: проблема в том что is_friend, временная таблица --- не выдат значения 0 а только 1,  IF(friend.user_id,1,0) AS is_friend, может поправть запрос ??

Неактивен

 

#2 17.08.2008 15:42:29

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Проблема с запросом.....

Если пользователь найден в таблице друзей, то friend,user_id будет ненулевым, в противном случае NULL. IF, приведенный Вами, решит данную проблему.

Неактивен

 

#3 17.08.2008 20:49:06

Борис
Завсегдатай
Зарегистрирован: 20.07.2008
Сообщений: 29

Re: Проблема с запросом.....

Всё спасибо разобрался сам smile

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson