[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Объединение 2х запросов с приминением WHERE и OR
agentor
у меня возник вопрос:
создал базу для друзей( что бы показывало кто у кого друг) но вывод делаю таким образом что бы в профиле показывало только друзья но не сам пользователь.
у меня не как не получается вытащит 2 запрос из цикла и оптимировать его в один т.к присутствует (OR) в WHERE, который мне нужен
мне нужен как бы перекрёстный запрос..
посоветуйте что нибудь пожалуйста

PHP
$fgetaaa = mysql_query("SELECT COUNT(*) FROM user_freunde WHERE (userid = '".$b["id"]."' OR friendid = '".$b["id"]."') AND status='ok'");
$row2 = mysql_fetch_row($fgetaaa);
$faaanz = $row2[0];/// = COUNT 

$resfrend = mysql_query("SELECT * FROM user_freunde WHERE (userid = '".$b["id"]."' OR friendid= '".$b["id"]."') AND status='ok' LIMIT 10");
while(
$rowfrend = mysql_fetch_array($resfrend)) {
$facc++;
if(
$rowfrend["friendid"]== $b["id"])
$fdid = $rowfrend["userid"];
else
$fdid = $rowfrend["friendid"];

$getuser = mysql_query("SELECT * FROM user WHERE id='".$fdid."'");
$row = mysql_fetch_array($getuser);

///USER DATA
print(" ".$row["user"]."");
// END USER DATA

}


HTML
CREATE TABLE `user_freunde` (
`id` bigint(20) NOT NULL auto_increment,
`userid` bigint(20) default NULL,
`friendid` bigint(20) default NULL,
`status` varchar(2) collate latin1_general_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM;


INSERT INTO `user_freunde` VALUES (2, 1, 6, 'ok');
INSERT INTO `user_freunde` VALUES (1, 2, 1, 'ok');




если я делаю таким образом

PHP
SELECT user_freunde.id,
    user_freunde.userid,
    user_freunde.friendid,
    user_freunde.status,
    user.user as username,
    user.geschlecht,
    user.geburtsdatum
    FROM user_freunde
    LEFT JOIN user ON user_freunde
.friendid = user.id
    WHERE 
(user_freunde.userid = '".$b["id"]."' OR user_freunde.friendid = '".$b["id"]."') AND user_freunde.status='ok'


то у меня выводит из friendid а также и самого меня в моём профиле, что мне ненужно

$b["id"] = USER ID

вобще можно ли сделать типа
PHP
LEFT JOIN user ON user_freunde.friendid user.id [b]OR[/buser_freunde.userid user.
unsure.gif



Спустя 9 часов, 22 минуты, 25 секунд (21.10.2009 - 07:11) olgatcpip написал(а):
если нужно выводить что-то кроме id такого-то, то...
where (... or ...) and id<>значение

Спустя 9 часов, 10 минут, 15 секунд (21.10.2009 - 16:21) agentor написал(а):
Цитата (olgatcpip @ 21.10.2009 - 04:11)
если нужно выводить что-то кроме id такого-то, то...
where (... or ...) and id<>значение

не совсем понятен ответ...

как всё из цикла вытащит из 2х запросов в один сделат. эрто мне нужно..
неужели нет ниукого идей?
меня интересует из 2х один имея виду запросы
$resfrend и $getuser

Спустя 9 минут, 42 секунды (21.10.2009 - 16:31) Gram написал(а):
Че то не понятная логика. Вы сами у себя в друзьях находитесь?


SQL
"SELECT friendid, COUNT(friendid) AS num FROM user_freunde WHERE userid = `".$b['id']."` AND status=`ok` LIMIT 10";

Спустя 3 дня, 20 часов, 12 минут, 38 секунд (25.10.2009 - 13:43) agentor написал(а):
спасибо с этим запросом разобрался...теперь другой мешает...
как этот скрестить

PHP
select
sum
(case seeder when 'yes' then 1 else 0 end) as activeseed,
sum(case seeder when 'no' then 1 else 0 end) as activeleech,
connectable as konnekted
from peers WHERE userid 
= ".(int)$user_id."


с этим



PHP
$res = mysql_query("SELECT COUNT(*) FROM messages WHERE receiver=" . $user_id. " && unread='yes'") or die("Проводится обработка файлов!!!Подождите...");
    $arr = mysql_fetch_row($res);
    $unread = $arr[0];


должно быть что то типа

PHP
select
sum
(case seeder when 'yes' then 1 else 0 end) as activeseed,
sum(case seeder when 'no' then 1 else 0 end) as activeleech,
connectable as konnekted,
COUNT(messages.receiver) AS counter
FROM peers
LEFT JOIN messages ON peers
.userid messages.receiver
WHERE userid 
5
GROUP by connectable
,
Быстрый ответ:

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