Доброго всем времени!
Нарисовал запрос:
$q1_ = " SELECT node_revisions.nid, node.nid, " .
" node_revisions.title AS c_title, " .
" node_revisions.teaser, users.name, ".
" node_type.name AS typename " .
" FROM node_revisions, node, users, node_type " .
" LEFT JOIN content_type_gr_tov stov ON stov.nid = node.nid " .
" WHERE (node_revisions.nid = node.nid) " .
" AND (node.status = 1) " .
" AND (node.language = '%s') " .
" AND (node.uid = users.uid) " .
" AND (node_type.type = node.type) " .
" AND (node_type.type ='%s') " ;
при выполнении выдает ошибку:
user warning: Unknown column 'node.nid' in 'on clause' query: SELECT node_revisions.nid,...
Если убираю строчку с "LEFT JOIN..." то все работает нормально.
Да и ошибка странная - с таблицей "node" все в порядке....
Может кто знает проблему?
Комментарии
Не возьмусь утверждать но наверное не допускается смешивать старую нотацию джойна с нотацией SQL92
перепишите FROM node_revisions, node, users, node_type через INNER JOIN
Я не совсем понял-если не трудно, что нибудь для примера...
И еще: Вот работающий запрос из Views, где LEFT JOIN прописан анологично.
SELECT node.nid AS nid,
term_data.weight AS term_data_weight,
node_revisions.title AS node_revisions_title,
DATE_FORMAT((FROM_UNIXTIME(node_revisions.timestamp) + INTERVAL 7200 SECOND), '%Y') AS node_revisions_timestamp_year
FROM node node
LEFT JOIN content_type_gr_tov node_data_field_npp ON node.vid = node_data_field_npp.vid
LEFT JOIN term_node term_node ON node.vid = term_node.vid
LEFT JOIN term_data term_data ON term_node.tid = term_data.tid
LEFT JOIN node_revisions node_revisions ON node.vid = node_revisions.vid
WHERE (node.type in ('news_story')) AND (node_data_field_npp.field_npp_value IS NULL)
ORDER BY term_data_weight ASC, node_revisions_title DESC, node_revisions_timestamp_year DESC
<?php
$q1_ =<<<EOT
SELECT node_revisions.nid, node.nid,
node_revisions.title AS c_title,
node_revisions.teaser, users.name,
node_type.name AS typename
FROM node_revisions
INNER JOIN node ON node.nid=node_revisions.nid AND node.vid=node_revisions.vid AND (node.status = 1)
INNER JOIN users ON users.uid=node.uid
INNER JOIN node_type ON node_type.type=node.type
LEFT JOIN content_type_gr_tov stov ON stov.nid = node.nid
WHERE (node.language = '%s') AND (node_type.type ='%s')
EOT;?>
Большое спасибо! Заработало!