Здравствуйте,
ребята подскажите как правильно выполнить запрос
сейчас стоит "SELECT n.nid, n.created FROM {node} n WHERE n.type = '$content_type' AND n.status = 1 ORDER BY n.created DESC"
т.о. выводятся все ноды заданного типа
а нужно выводить по одной ноде заданного типа но с разными присвоенными терминами (у ноды всего один присвоенный термин), т.е. чтобы было исключение по термину, не знаю как точно но что типа DISTINCT(t.tid)
Комментарии
GROUP BY (MySQL фича)?
DISTNICT?
FROM(
SELECT
n.nid, n.created, t.tid
FROM
{node} n,
{term_node} t
WHERE
n.nid = t.nid
AND n.type = '$content_type'
AND n.status = 1
) d
вроде не срабатывает =(, выводит все ноды
чтоб быть точным запрос выглядит сейчас так
$content_type = 'portfolio';
$result1 = pager_query(db_rewrite_sql("SELECT DISTINCT d.nid, d.created
FROM(
SELECT
n.nid, n.created, t.tid
FROM
{node} n,
{term_node} t
WHERE
n.nid = t.nid
AND n.type = '$content_type'
AND n.STATUS = 1
) d"),6);
while ($node = db_fetch_object($result1)) {
$output .= node_view(node_load(array('nid' => $node->nid)), 1);
}
print $output;
?>
Так оно и есть
Сам понял позже. Надо первым запросом отбирать tid, затем во втором запросе отбирать ноды с данным tid и указанием limit 0, 1.
Чисто схематически:
while ($tid = db_result($tids)) {
$nid = db_result(db_query("SELECT n.nid, n.created FROM {node} n, {term_node} t WHERE n.type = '$content_type' AND n.status = 1 AND t.nid = n.nid AND t.tid = %s ORDER BY n.created DESC LIMIT 0,1", $tid));
$output .= node_view(node_load(array('nid' => $nid)), 1);
}
FROM {node} n,{term_node} t
WHERE n.nid = t.nid
AND n.type = '$content_type'
AND n.STATUS = 1
2gumk:
проблема в том, что это перестает работать как только у ноды появляется более одного tid. Автору вопроса сейчас это неактуально, а завтра станет актуально.
здесь по моему несколько запросов будет вместо одного, что не есть хорошо?
также попробывал его, вообще ни чего не выводит
этот код тоже к сожалению выводит все ноды
Нормально
а черновик и не выведет ничего. на то он и черновик