X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Что за ошибка в базе данных?
Дилетант_mw
Дилетант_mw
Topic Starter сообщение 26.12.2011, 23:38; Ответить: Дилетант_mw
Сообщение #1


Из-за чего может быть ошибка?

SELECT u_id,u__name,u__email FROM ib_Post, ib_User LEFT JOIN ib_Subscription sb ON (sb.uid=u_id AND sb.tid=p_tid) LEFT JOIN ib_UserAccess ua ON
(ua.uid=u_id AND ua.fid=2) WHERE p_uid=u_id AND u_id>4 AND COALESCE(ua_level,u__level)>1000<br>1054: Unknown column 'p_tid' in 'on clause'


Нет столбца-поля p_tid, а в какой таблице?

Запрос непонятен для меня, чайника. Подскажите, что тут происходит? Что за SELECT FROM LEFT и т.д.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
matroskin8
matroskin8
сообщение 27.12.2011, 13:19; Ответить: matroskin8
Сообщение #2


(Дилетант)
Что за SELECT FROM LEFT...

При помощи оператора JOIN можно объединить данные из двух таблиц в одну.
(Дилетант)
Из-за чего может быть ошибка?

Вы сами и ответили на свой вопрос... из-за того, что проанализировав запрос, сервер не нашел поля p_tid.
В какой таблице это поле... ну Вам виднее - Вы же работаете с этой БД... рискну предположить, что в одной из таблиц: ib_Post, ib_User... вот только из них это поле в запросе не выбирается. Также в запросе, во избежание недоразумений, желательно указывать из какой именно таблицы брать значение того или иного поля.
Вообще, код желательно постить так, чтобы его было удобно читать или разбирать тому, кто Вам решит помочь... проявляйте уважение.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
yury_mw
yury_mw
сообщение 29.12.2011, 0:00; Ответить: yury_mw
Сообщение #3


(Дилетант @ 26.12.2011, 23:38) *
Из-за чего может быть ошибка?

SELECT u_id,u__name,u__email FROM ib_Post, ib_User LEFT JOIN ib_Subscription sb ON (sb.uid=u_id AND sb.tid=p_tid) LEFT JOIN ib_UserAccess ua ON
(ua.uid=u_id AND ua.fid=2) WHERE p_uid=u_id AND u_id>4 AND COALESCE(ua_level,u__level)>1000<br>1054: Unknown column 'p_tid' in 'on clause'

Нет столбца-поля p_tid, а в какой таблице?

Запрос непонятен для меня, чайника. Подскажите, что тут происходит? Что за SELECT FROM LEFT и т.д.

В базах не силен, но есть подозрение, что поле p_tid живет в таблице ib_Post, а запрос ищет (и не находит) его в объединении таблиц ib_User и ib_Subscription sb.
Короче, попробуйте вместо запятой написать LEFT JOIN:
SELECT u_id,u__name,u__email
FROM ib_Post LEFT JOIN ib_User LEFT JOIN ib_Subscription sb ON (sb.uid=u_id AND sb.tid=p_tid) LEFT JOIN ib_UserAccess ua ON (ua.uid=u_id AND ua.fid=2)
WHERE p_uid=u_id AND u_id>4 AND COALESCE(ua_level,u__level)>1000

Ну или действительно поискать, в какой из таблиц на самом деле живет поле p_tid.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
НЕПЛОХОЙ
НЕПЛОХОЙ
сообщение 29.12.2011, 0:20; Ответить: НЕПЛОХОЙ
Сообщение #4


попробуйте так
SELECT * FROM ib_Post, ib_User LEFT JOIN ib_Subscription sb ON (sb.uid=u_id AND sb.tid=ib_post.tid) LEFT JOIN ib_UserAccess ua ON
(ua.uid=u_id AND ua.fid=2) WHERE p_uid=u_id AND u_id>4 AND COALESCE(ua_level,u__level)>1000

но скорей всего работать не будет, тогда посмотрите поле tid в таблице ib_Post
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Дилетант_mw
Дилетант_mw
Topic Starter сообщение 29.12.2011, 17:23; Ответить: Дилетант_mw
Сообщение #5


Структура таблицы ib_post
Поле     Тип     Ноль     По умолчанию     Комментарии
p_id     int(10)     Нет         
p_tid     int(10)     Нет     0     
p_uid     int(11)     Нет     0     
p_text     mediumtext     Нет         
p__modcomment     mediumtext     Нет         
p__time     int(10)     Нет     0     
p__edittime     int(10)     Нет     0     
p_signature     tinyint(4)     Нет     0     
p__smiles     tinyint(4)     Нет     0     
p__bcode     tinyint(4)     Нет     0     
p__html     tinyint(4)     Нет     0     
p_attach     int(11)     Нет     0     
p_uname     varchar(32)     Нет         
p__ip     int(10)     Нет     0     
p_title     varchar(64)     Нет         
p__premoderate     tinyint(4)     Нет     0


Структура таблицы ib_user
Поле     Тип     Ноль     По умолчанию     Комментарии
u_id     int(10)     Нет         
u_stid     int(10)     Нет     0     
u_lnid     int(10)     Нет     0     
u__level     smallint(6)     Нет     0     
u__name     varchar(32)     Нет         
u__active     tinyint(4)     Нет     0     
u__password     varchar(32)     Нет         
u__email     varchar(48)     Нет         
u_usesignature     tinyint(4)     Нет     0     
u_showmail     tinyint(4)     Нет     0     
u_usesmiles     tinyint(4)     Нет     0     
u_signature     varchar(255)     Нет         
u_gender     tinyint(4)     Нет     0     
u_sformat     varchar(20)     Нет         
u_lformat     varchar(20)     Нет         
u_location     varchar(40)     Нет         
u_tperpage     smallint(6)     Нет     0     
u_mperpage     smallint(6)     Нет     0     
u_homepage     varchar(128)     Нет         
u_showavatars     tinyint(4)     Нет     0     
u_avatartype     tinyint(4)     Нет     0     
u__avatar     varchar(128)     Нет         
u__pavatar_id     int(11)     Нет     0     
u__photo_id     int(11)     Нет     0     
u_encrypted     tinyint(4)     Нет     0     
u__regdate     int(10)     Нет     0     
u__profileupdate     int(10)     Нет     0     
u__newpassword     varchar(32)     Нет         
u__title     varchar(48)     Нет         
u_timeregion     smallint(6)     Нет     0     
u_icq     int(11)     Нет     0     
u_interests     varchar(255)     Нет         
u_hidden     tinyint(4)     Нет     0     
u__key     varchar(12)     Нет         
u_detrans     tinyint(4)     Нет     0     
u_nomails     tinyint(4)     Нет     0     
u_sortposts     tinyint(4)     Нет     0     
u_multilang     tinyint(4)     Нет     0     
u_timelimit     smallint(6)     Нет     0     
u_bday     tinyint(3)     Нет     0     
u_bmonth     tinyint(3)     Нет     0     
u_bmode     tinyint(3)     Нет     0     
u_aol     varchar(32)     Нет         
u_yahoo     varchar(32)     Нет         
u_msn     varchar(64)     Нет         
u_jabber     varchar(64)     Нет         
u_diary     varchar(128)     Нет         
u_extform     tinyint(4)     Нет     1     
u_aperpage     smallint(5)     Нет     0     
u__rating     int(10)     Нет     0     
u__warnings     int(10)     Нет     0     
u__pmcount     int(10)     Нет     0     
u__warntime     int(10)     Нет     0     
u__lastlogin     int(10)     Нет     0     
u_pmnotify     tinyint(3)     Нет     1     
u__pmtime     int(10)     Нет     0     
u_realname     varchar(60)     Нет         
u_nosigns     tinyint(3)     Нет     0     
u_prevmsgs     tinyint(3)     Нет     5


ib_Subscription
Поле     Тип     Ноль     По умолчанию     Комментарии
uid     int(10)     Нет     0     
tid     int(10)     Нет     0     
fid     int(11)     Нет     0


ib_UserAccess
Поле     Тип     Ноль     По умолчанию     Комментарии
uid     int(10)     Нет     0     
fid     int(10)     Нет     0     
ua_level     smallint(6)     Да     NULL


Код, где ошибка
$sql = "SELECT p.*,t_title,t_id,f_title,f_id FROM ".$GLOBALS['DBprefix']."Post p, ".$GLOBALS['DBprefix']."Topic, ".$GLOBALS['DBprefix']."Forum ".
          "WHERE ($pmdata) AND p_tid=t_id AND t_fid=f_id";
    $res =&db_query($sql,$link);
    $buffer=load_mail("std_post.txt");
    while ($pdata=&db_fetch_array($res)) {
      $sql = "SELECT u_id,u__name,u__email FROM ".$GLOBALS['DBprefix']."Post, ".$GLOBALS['DBprefix']."User ".
      "LEFT JOIN ".$GLOBALS['DBprefix']."Subscription sb ON (sb.uid=u_id AND sb.tid=p_tid) ".
      "LEFT JOIN ".$GLOBALS['DBprefix']."UserAccess ua ON (ua.uid=u_id AND ua.fid=".$GLOBALS['forum'].") ".
      "WHERE p_uid=u_id AND u_id>4 AND ".
      "COALESCE(ua_level,u__level)>".$GLOBALS['inforum']['f_lmoderate'];
      $res =&db_query($sql,$link);
      while ($email=db_fetch_row($res)) {
        $GLOBALS['username']=$email[0];
        $GLOBALS['postername']=$GLOBALS['inuser']['u__name'];
        $GLOBALS['flink']=$GLOBALS['opt_url']."/index.php?t=".$GLOBALS['topic'];
        $GLOBALS['unsublink']=$GLOBALS['opt_url']."/agent.php?a=unsub&u=".$GLOBALS['inuserid'].
         "&f=".$GLOBALS['forum']."&t=".$GLOBALS['topic']."&key=".md5($GLOBALS['topic'].$GLOBALS['inuser']['u__key']);
        replace_mail($buffer,$email[1],MSG_p_newmessage." ".$GLOBALS['ttitle']);
      }
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
НЕПЛОХОЙ
НЕПЛОХОЙ
сообщение 29.12.2011, 18:00; Ответить: НЕПЛОХОЙ
Сообщение #6


SELECT * FROM ib_Post, ib_User LEFT JOIN ib_Subscription sb ON (sb.uid=u_id AND sb.tid=ib_post.p_tid) LEFT JOIN ib_UserAccess ua ON
(ua.uid=u_id AND ua.fid=2) WHERE p_uid=u_id AND u_id>4 AND COALESCE(ua_level,u__level)>1000


отпишитесь, что выводит теперь
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
matroskin8
matroskin8
сообщение 29.12.2011, 18:36; Ответить: matroskin8
Сообщение #7


В запросе надо бы поправить регистр имени таблицы, потому как не всегда может быть ib_Post == ib_post.
Если сервер установлен не под Windows, а под Unix, тогда имена таблиц могут быть чувствительны к регистру. Да и в случае если сервер БД стоит на ОС Windows также не следует злоупотреблять регистронезависимостью.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Магадан
Магадан
сообщение 19.1.2012, 17:13; Ответить: Магадан
Сообщение #8


(matroskin8 @ 29.12.2011, 18:36) *
В запросе надо бы поправить регистр имени таблицы, потому как не всегда может быть ib_Post == ib_post.
Если сервер установлен не под Windows, а под Unix, тогда имена таблиц могут быть чувствительны к регистру. Да и в случае если сервер БД стоит на ОС Windows также не следует злоупотреблять регистронезависимостью.


Более того, в рамках одного запроса не стоит писать имя одной и той же таблицы в разных вариантах, как рекомендовали в запросах выше (ib_Post и ib_post):

SELECT * FROM ib_Post, ib_User LEFT JOIN ib_Subscription sb ON (sb.uid=u_id AND sb.tid=ib_post.p_tid)


Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыСтатейное продвижение ваших сайтов по качественной базе с тИЦ
тИЦ 10+
237 Intersect 258053 Вчера, 12:13
автор: Intersect
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыВо что Вы играете?
400 Vmir 67986 20.4.2024, 18:39
автор: SaintExchange
Горячая тема (нет новых ответов) Во что сегодня инвестировать?
Делимся своими приносящими прибыль вариантами
76 traveliver 5096 20.4.2024, 18:27
автор: SaintExchange
Открытая тема (нет новых ответов) Интеграция спортивных данных API. Коэффициенты БК, Live результаты
15 yaroslav89 6873 8.4.2024, 17:17
автор: spoyer_ru
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыБезанкорный прогон по базе 1600 000 сайтов из DMOZ
44 aleggator 13795 10.3.2024, 18:29
автор: kuprum


 



RSS Текстовая версия Сейчас: 25.4.2024, 15:15
Дизайн