Вопрос по БД и PHP

12
IL
На сайте с 20.04.2007
Offline
435
#11
Милованов Ю.С:
Самая популярная страница

Продолжаем-развиваем:

Найти "похожих" юзеров (у которых количество лайкнутых одинаковых страниц наибольшее по абсолютной (сумма т.е.) или (относительной (к общему числу постов этого пользователя) величине))

Группы по интересам (если есть тэги к записям - join с таблицей тэгов может дать выборку "интересующихся" пользователей)

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
syrpo
На сайте с 20.03.2009
Offline
104
#12
Милованов Ю.С:

Получить все страницы, которые есть у юзера (SELECT page_id FROM this_table WHERE user_id='№юзера').

Если потом мне надо вытащить какие-то поля из таблицы содержания самых страниц (pages_table), где id страниц = полученным id из выше******енного запроса, то получается

надо делать select внутри selecta, или как лучше поступить?

$result = mysql_query("SELECT pageid FROM users_fav WHERE userid='$user_id'",$db);

$myrow = mysql_fetch_array($result);

do {

pageid=myrow[pageid];

$result2 = mysql_query("SELECT * FROM pages_table WHERE id='$page_id'",$db);

$myrow2 = mysql_fetch_array($result2);

}

while ($myrow = mysql_fetch_array($result));

IL
На сайте с 20.04.2007
Offline
435
#13
syrpo:
$result2 = mysql_query("SELECT * FROM pages_table WHERE id='$page_id'",$db);

Можно одним запросом пачку получить.. WHERE id in (1,2,3)

Или JOIN двух таблиц (users_fav , pages_table) сделать по

user_id = :user_id AND users_fav.id = pages_table.id
.. В данном случае вполне приемлемо.
siv1987
На сайте с 02.04.2009
Offline
427
#14
syrpo:

do {
pageid=myrow[pageid];

$result2 = mysql_query("SELECT * FROM pages_table WHERE id='$page_id'",$db);
$myrow2 = mysql_fetch_array($result2);

}
while ($myrow = mysql_fetch_array($result));

Курсы Попова? Тупая привычка использовать для фетчинга do-while и почти всегда неверная.

syrpo:
Если потом мне надо вытащить какие-то поля из таблицы содержания самых страниц (pages_table), где id страниц = полученным id из выше******енного запроса, то получается
надо делать select внутри selecta, или как лучше поступить?

http://ru.wikipedia.org/wiki/Join_(SQL)

SELECT p.*, f.* FROM users_fav f INNER JOIN pages_table p ON p.id=f.pageid WHERE f.userid=$user_id

или

SELECT p.* FROM (SELECT pageid FROM users_fav WHERE userid=$user_id) z INNER JOIN pages_table p ON p.id=z.pageid

в подзапросе можно использовать и ORDER, и LIMIT - все будет шустро выполнятся.

syrpo
На сайте с 20.03.2009
Offline
104
#15
siv1987:
Курсы Попова? Тупая привычка использовать для фетчинга do-while и почти всегда неверная.

какую альтернативу предлагаете?

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#16


$query = "SELECT * FROM tbl1 WHERE id='10'";
$result = mysql_query($query);
if(is_resource($result))
{
while($row = mysql_fetch_assoc($result))
{
//some code
//some code too
}
}
else
{
if(DEBUG === TRUE)
echo mysql_errno(), ': ', mysql_error();
else
echo 'Ошибка запроса, сообщите админу сайта';
}
Подпись))
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий