Как совместить 2 запроса в 1. Для сортировки

netdog

net @
Как совместить 2 запроса в 1. Для сортировки

Народ, требуется помощь, долго мучался но ничего не получилось толком:

Есть у нас 2 таблицы:
1. sites: | id | name | url |
2. traffic: | id_sites | time |
----
1. список добавленных сайтов
2. подсчет траффика этих сайтов.
id_sites - это id в sites
----

Есть рабочий вариант такой:
...
PHP:
$query = "select * from sites";
$result = mysql_query($query, $link);

while ($row = mysql_fetch_array($result) )
{
//... html опущен ....
$query2 = "select count(*) from traffic WHERE DATE_ADD(time, INTERVAL 24 HOUR) > NOW() AND id_sites = '$row[id]' ";

$result2 = mysql_query($query2, $link) or die("ERROR: " .mysql_error() );
$row2 = mysql_fetch_array($result2);

echo "... $row2[0] ... "; 


//... html опущен ....
}

Получается html страница вида:
1| NAME1 | URL1 | траффик за последние 24 часа у этого сайта с id1|
2| NAME2 | URL2 | траффик за последние 24 часа у этого сайта с id2|
3| NAME3 | URL3 | траффик за последние 24 часа у этого сайта с id3|
----

Минус сего Этого. Нельзя отсортировать по убыванию траффика. т.к. в первом запросе $result еще неизвестно колличество траффика.
известно становится только в $result2

Помогите правильно впихнуть эти 2 запроса в 1 запрос чтобы можно было отсортировать. Если я правильно мыслю что так надо.

Долго мучался но ничего не получилось толком
 

DiMA

php.spb.ru
Команда форума
что в time хранится? если что-то спрашивай, давай полное и подробное описание
 

netdog

net @
Автор оригинала: DiMA
что в time хранится? если что-то спрашивай, давай полное и подробное описание
datetime
путем WHERE DATE_ADD(time, INTERVAL 24 HOUR) > NOW()
выбираем время за последние 24 часа
 

DiMA

php.spb.ru
Команда форума
я же сказал подробно описать смысл, а не тип поля
 

netdog

net @
Автор оригинала: DiMA
я же сказал подробно описать смысл, а не тип поля
У меня получается (моим способом указанным выше)
допустим получается(html):
id| name | url |traffic|
1 | NAME1 | URL1 |123|
2 | NAME2 | URL2 |5433|
3 | NAME3 | URL3 |1344|
...

Надо отсортировать по полю |traffic| чтобы получилось
id| name | url |traffic|
2 | NAME2 | URL2 |5433|
3 | NAME3 | URL3 |1344|
1 | NAME1 | URL1 |123|
...
 

netdog

net @
т.е.
$query = "select * from sites";
и
$query2 = "select count(*) from traffic WHERE DATE_ADD(time, INTERVAL 24 HOUR) > NOW() AND id_sites = '$row[id]' ";
'$row[id]' из пеового запроса $query.

Надо совместить в одно целое
 

idencial

Одинаковый
Либо $query2 = "select count(*) as traffic from traffic WHERE DATE_ADD(time, INTERVAL 24 HOUR) > NOW() group by id_sites order by traffic";
Либо объясни подробнее
 

Vasya

Guest
От-так-от! :)

select s.id as sid, count(*) as cnt
from traffic t, sites s
WHERE
DATE_ADD(t.ttime, INTERVAL 24 HOUR) > NOW()
AND t.id_sites = s.id
GROUP BY sid
 

netdog

net @
А теперь подскажите пожалуйста где про это можно почитать в онлайне желательно на русском, а то ничерта не могу понять
 

netdog

net @
Всем пока что спасиба, кто участвовал в помощи, пошел терь читать :)
 

chira

Новичок
хорошо что разобраблся , может этот запрос будет тебе интересен:

select s.id, s.name, s.url, count(*) traffic from sites s, traffic t WHERE t.time > DATE_ADD(NOW(), INTERVAL -24 HOUR) AND t.id_sites = s.id
GROUP BY s.id, s.name, s.url
ORDER BY traffic DESC
 
Сверху