Нужна помощь в написании запроса к базе

Статус
В этой теме нельзя размещать новые ответы.

Alexsej

Создатель
Регистрация
15 Авг 2008
Сообщения
21
Реакции
0
есть запрос к базе, в котором есть выбор значений, используя критерии, записанные заранее в массиве $where, причем размер его постоянно меняется... к примеру '77','80','16','34'. В общем, это вывод списка объектов в так называемом 'Избранном', сформированном с помощью записи параметров объекта в cookies.
Пытаюсь как то организовать цикл,для подстановки элементов массива... но работает пока только в таком виде... четким заданием:ah:
<php>
$sql = "SELECT p.*, a.id AS agentid, a.name AS agent, a.user AS user, c.name AS company, c.id AS companyid, t.name AS type, p.type AS typeid "
. "\n FROM (#__hp_properties AS p, #__hp_companies AS c)"
. "\n LEFT JOIN #__hp_agents AS a ON p.agent = a.id"
. "\n LEFT JOIN #__hp_prop_types AS t ON p.type = t.id"
. "\n LEFT JOIN #__hp_featured AS f ON f.property = p.id"
. "\n WHERE p.published='1' AND p.approved='1' AND t.published='1' "
. "\n AND a.company=c.id"
. "\n AND (publish_up = '0000-00-00 00:00:00' OR publish_up <= NOW())"
. "\n AND (publish_down = '0000-00-00 00:00:00' OR publish_down >= NOW())"
. "\n AND (p.id=$where[0] OR p.id=$where[1] OR p.id=$where[2] ) "
. (($which == "featured") ? "\nAND p.featured='1'" : "")
. "\nORDER BY ".(($which == "featured") ? "f.ordering ASC" : "p.".$sort." ".$order)
. "\nLIMIT ".$limitstart.", ".$limit;
$database->setQuery( $sql );
$properties = $database->loadObjectList();
</php>
 
если правильно понял попробуй так
. "\n AND p.id in (".join(",",$where).")"
 
PHP:
<php>
$subquery="";
foreach($where as $v){
    $subquery .= " OR p.id=$v";
}
$subquery = substr($subquery, 4);
$sql = "SELECT p.*, a.id AS agentid, a.name AS agent, a.user AS user, c.name AS company, c.id AS companyid, t.name AS type, p.type AS typeid "
. "\n FROM (#__hp_properties AS p, #__hp_companies AS c)"
. "\n LEFT JOIN #__hp_agents AS a ON p.agent = a.id"
. "\n LEFT JOIN #__hp_prop_types AS t ON p.type = t.id"
. "\n LEFT JOIN #__hp_featured AS f ON f.property = p.id"
. "\n WHERE p.published='1' AND p.approved='1' AND t.published='1' "
. "\n AND a.company=c.id"
. "\n AND (publish_up = '0000-00-00 00:00:00' OR publish_up <= NOW())"
. "\n AND (publish_down = '0000-00-00 00:00:00' OR publish_down >= NOW())"
. "\n AND ($subquery) "
. (($which == "featured") ? "\nAND p.featured='1'" : "")	
. "\nORDER BY ".(($which == "featured") ? "f.ordering ASC" : "p.".$sort." ".$order)
. "\nLIMIT ".$limitstart.", ".$limit;
$database->setQuery( $sql );
$properties = $database->loadObjectList();
</php>
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху