|  | 
Задавайте вопросы, мы ответим
Вы не зашли.
Прошу помощи.
Вот такая ошибка 
            
Unknown column 't.objav_id' in 'on clause'
сам код вот 
       
 "SELECT f.*, COUNT(t.thread_id) AS thread_count, MAX(t.thread_lastpost) AS last_post, f2.objav_name AS objav_cat_name, u.user_id, u.user_name FROM ".$db_prefix."objavs f
        LEFT JOIN ".$db_prefix."threads t USING(objav_id)
        LEFT JOIN ".$db_prefix."objavs f2 ON f.objav_cat = f2.objav_id
        LEFT JOIN ".$db_prefix."users u ON f.objav_lastuser = u.user_id
        WHERE ".groupaccess('f.objav_access')." AND f.objav_cat!='0' GROUP BY objav_id ORDER BY f2.objav_order ASC, f.objav_order ASC"познаний в mysql практически 0  
Что означает сама запись в запросе к базе   
f.objav_access
, у меня в таблице нет такой строки.
Помоготе разобраться.
Неактивен

Видимо в том и причина, что некоторых колонок в таблицах нет.
Пришлите пожалуйста структуру таблиц - результат выполнения:
SHOW CREATE TABLE threads;
SHOW CREATE TABLE objavs;
SHOW CREATE TABLE users;
Неактивен
Есть файлы форума phpFusion. Мне требуется сделать два независимых форума, вернее хочу один переделать под другие нужды на том же сайте.
Коппирую папку форума, копирую все таблицы базы, папку и таблицы переименовываю из forum в objav и obj_forum в obj_objav.
В папке objav переписываю все обращения с forum на objav по запросам базы.
Вот часть исходника : 
echo "<table cellpadding='0' cellspacing='0' width='100%' class='tbl-border'>
<tr>
<td>
<table border='0' cellpadding='0' cellspacing='1' width='100%'>
<tr>
<td colspan='2' class='tbl2'>".$locale['401']."</td>
<td align='center' width='50' class='tbl2'>".$locale['402']."</td>
<td align='center' width='50' class='tbl2'>".$locale['403']."</td>
<td width='120' class='tbl2'>".$locale['404']."</td>
</tr>\n";
$forum_list = ""; $current_cat = "";
$result = dbquery(
        "SELECT f.*, COUNT(t.thread_id) AS thread_count, MAX(t.thread_lastpost) AS last_post, f2.forum_name AS forum_cat_name, u.user_id, u.user_name FROM ".$db_prefix."forums f
        LEFT JOIN ".$db_prefix."threads t USING(forum_id)
        LEFT JOIN ".$db_prefix."forums f2 ON f.forum_cat = f2.forum_id
        LEFT JOIN ".$db_prefix."users u ON f.forum_lastuser = u.user_id
        WHERE ".groupaccess('f.forum_access')." AND f.forum_cat!='0' GROUP BY forum_id ORDER BY f2.forum_order ASC, f.forum_order ASC"
);
if (dbrows($result) != 0) {
        while ($data = dbarray($result)) {
                if ($data['forum_cat_name'] != $current_cat) {
                        $current_cat = $data['forum_cat_name'];
                        echo "<tr>\n<td colspan='5' class='forum-caption'>".$data['forum_cat_name']."</td>\n</tr>\n";
                }
                $moderators = "";
                if ($data['forum_moderators']) {
                        $res = "user_id='".str_replace(".", "' OR user_id='", $data['forum_moderators'])."'";
                        $result2 = dbquery("SELECT user_id,user_name FROM ".$db_prefix."users WHERE (".$res.")");
                        while ($data2 = dbarray($result2)) {
                                if ($moderators) $moderators .= ", ";
                                $moderators .= "<a href='".BASEDIR."profile.php?lookup=".$data2['user_id']."'>".$data2['user_name']."</a>";
                        }
                }
                if ($data['last_post'] > $lastvisited) {
                        $fim = "<img src='".THEME."forum/foldernew.gif' alt='".$locale['560']."'>";
                } else {
                        $fim = "<img src='".THEME."forum/folder.gif' alt='".$locale['561']."'>";
                }
                echo "<tr>вот та же часть того что получилось :
echo "<table cellpadding='0' cellspacing='0' width='100%' class='tbl-border'>
<tr>
<td>
<table border='0' cellpadding='0' cellspacing='1' width='100%'>
<tr>
<td colspan='2' class='tbl2'>".$locale['401']."</td>
<td align='center' width='50' class='tbl2'>".$locale['402']."</td>
<td align='center' width='50' class='tbl2'>".$locale['403']."</td>
<td width='120' class='tbl2'>".$locale['404']."</td>
</tr>\n";
$objav_list = ""; $current_cat = "";
$result = dbquery(
        "SELECT f.*, COUNT(t.thread_id) AS thread_count, MAX(t.thread_lastpost) AS last_post, f2.objav_name AS objav_cat_name, u.user_id, u.user_name FROM ".$db_prefix."objavs f
        LEFT JOIN ".$db_prefix."threads t USING(objav_id)
        LEFT JOIN ".$db_prefix."objavs f2 ON f.objav_cat = f2.objav_id
        LEFT JOIN ".$db_prefix."users u ON f.objav_lastuser = u.user_id
        WHERE ".groupaccess('f.objav_access')." AND f.objav_cat!='0' GROUP BY objav_id ORDER BY f2.objav_order ASC, f.objav_order ASC"
);
if (dbrows($result) != 0) {
        while ($data = dbarray($result)) {
                if ($data['objav_cat_name'] != $current_cat) {
                        $current_cat = $data['objav_cat_name'];
                        echo "<tr>\n<td colspan='5' class='forums-caption'>".$data['objav_cat_name']."</td>\n</tr>\n";
                }
                $moderators = "";
                if ($data['objav_moderators']) {
                        $res = "user_id='".str_replace(".", "' OR user_id='", $data['objav_moderators'])."'";
                        $result2 = dbquery("SELECT user_id,user_name FROM ".$db_prefix."users WHERE (".$res.")");
                        while ($data2 = dbarray($result2)) {
                                if ($moderators) $moderators .= ", ";
                                $moderators .= "<a href='".BASEDIR."profile.php?lookup=".$data2['user_id']."'>".$data2['user_name']."</a>";
                        }
                }
                if ($data['last_post'] > $lastvisited) {
                        $fim = "<img src='".THEME."forum/foldernew.gif' alt='".$locale['560']."'>";
                } else {
                        $fim = "<img src='".THEME."forum/folder.gif' alt='".$locale['561']."'>";
                }
                echo "<tr>так как в изначальном варианте всё работает, думаю что проблема в виде
prefix."objavs f2 ON f.objav_cat = f2.objav_id
f2 и f. - это как обрабатывается мне не понять без объяснения.
Неактивен

Вам не надо менять код программы. Вы изменили имя базы данных, а не таблиц, поэтому достаточно просто изменить имя базы в конфигурационном файле
Неактивен
Да нет база таже осталась, что и была. Я измени коппию таблиц с obj_forum на obj_objav и все колонки таблицы , было obj_firum > forum_id , forum_user  стало obj_objav > objav_id, objav_user.
Т.е. осталось всё однотипоно как и было, в файле тоже пришлось поменять на запросы из новой таблицы,
можете мне объяснить что такое f2 и f.    таких таблиц нет в помине, как это работает?
Отредактированно resset (05.12.2007 14:28:34)
Неактивен

f2 и f это алиасы к таблице ".$db_prefix."objavs
t это алиас к таблице ".$db_prefix."threads -  в этой таблице у Вас отсутствует колонка objav_id
Неактивен

resset написал:
Что означает сама запись в запросе к базе
Код:
f.objav_access, у меня в таблице нет такой строки.
Помоготе разобраться.
При обращении к столбцу можно указывать `полное имя столбца` - база.таблица.столбец или таблица.столбец как в данном случае
В качестве имени таблицы можно использовать алиас. В данном случае f это таблица ".$db_prefix."objavs
Видимо, проблема возникла от того, что Вы переименовали в базе не все столбцы, в результате в таблице ".$db_prefix."threads отсутствует колонка objav_id
Неактивен
В таблице threads есть колонка forum_id по аналогии создал колонку objav_id 
теперь показывает три ошибки с колонкой objav_id    
Unknown column 'objav_id' in 'where clause' Unknown column 'objav_id' in 'where clause' Unknown column 'objav_id' in 'where clause'
Не получилось, но по любому спасибо, это я и искал.
Как эти алиасы прописываются? Почему, скажем f2 , а не d2 или o32  ? это связано с названием таблицы?
Отредактированно resset (05.12.2007 16:01:05)
Неактивен

Проще наверное не менять названия таблиц и колонок, а изменить переменную $db_prefix, тогда все таблицы будут иначе называться (так как будут иметь другой префикс, а программу менять не придется).
Неактивен
rgbeast написал:
Проще наверное не менять названия таблиц и колонок, а изменить переменную $db_prefix, тогда все таблицы будут иначе называться (так как будут иметь другой префикс, а программу менять не придется).
У меня по всему сайту одна переменная префикса , поменяв её ещё больше запутаюсь и смысл в том что нужно использовать не один форум а два одинаковых, т.е. PunBB  скопировать в папку forum1 и немного переделав, заставить работать как доска объявлений скажем.
Как эти алиасы прописываются? Почему, скажем f2 , а не d2 или o32  ? это связано с названием таблицы?
Неактивен

Алиасы даются в самом запросы после имени таблицы. Имена алиасов вообще говоря произвольны.
Неактивен

resset написал:
В таблице threads есть колонка forum_id по аналогии создал колонку objav_id
теперь показывает три ошибки с колонкой objav_idКод:
Unknown column 'objav_id' in 'where clause' Unknown column 'objav_id' in 'where clause' Unknown column 'objav_id' in 'where clause'
А тот ли запрос приводит теперь к этим ошибкам?
resset написал:
У меня по всему сайту одна переменная префикса , поменяв её ещё больше запутаюсь и смысл в том что нужно использовать не один форум а два одинаковых, т.е. PunBB скопировать в папку forum1 и немного переделав, заставить работать как доска объявлений скажем.
Что значит `одинаковые` форумы? Они ведь используют разные таблицы, так почему бы просто не изменить переменную $db_prefix. Теперь же Вам надо искать в коде где ещё возникают ошибки.
Неактивен
Видимо ещё какие таблицы не отследил и не переименовал, попробую воспользоваться заменой префикса.
спасибо.
Неактивен
Префикс сменил, переменные переписал (намного меньше)
Пока всё работает, только в инсталятор впихивать как то надо.
Спасибо ещё раз 
Неактивен