простой LEFT JOIN в запросе вызывает ошибку

Главные вкладки

Аватар пользователя dim08 dim08 7 апреля 2010 в 13:18

Доброго всем времени!
Нарисовал запрос:

$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" все в порядке....
Может кто знает проблему?

Комментарии

Аватар пользователя olk olk 7 апреля 2010 в 13:34

Не возьмусь утверждать но наверное не допускается смешивать старую нотацию джойна с нотацией SQL92
перепишите FROM node_revisions, node, users, node_type через INNER JOIN

Аватар пользователя dim08 dim08 7 апреля 2010 в 14:00

olk wrote:
Не возьмусь утверждать но наверное не допускается смешивать старую нотацию джойна с нотацией 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

Аватар пользователя olk olk 7 апреля 2010 в 14:48
<?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;?>