IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   MySQL5 & vBulletin (http://www.imho.ws/showthread.php?t=96458)

Madness 25.11.2005 12:43

MySQL5 & vBulletin
 
Вопрос по sql:
Код:

Invalid SQL:
        SELECT thread.threadid, thread.forumid
        FROM thread AS thread, subscribethread AS subscribethread
        LEFT JOIN deletionlog AS deletionlog ON(deletionlog.primaryid = thread.threadid AND type = 'thread')
        WHERE subscribethread.threadid = thread.threadid
        AND subscribethread.userid = 14580
        AND thread.visible = 1
        AND lastpost > 1132908684
        AND deletionlog.primaryid IS NULL

mysql error: Unknown column 'thread.threadid' in 'on clause'

Говорят, что Хелл поставил у нас тут 5-ую версию mysql, терь вот такая фигня стала вылазить в usercp. У меня вот вопрос к всезнающему All, в запросе ли ошибка?
Если вместо выделенного оставить только thread, то mysql не ругается, но если принудительно указать таблицу надо, тогда как? :confused:
Да и тут как пример приведено:
Код:

mysql> SELECT * FROM table1 LEFT JOIN table2 ON table1.id=table2.id;

SergoZD 25.11.2005 13:06

Madness
Вот исправление для этой траблы.

BorLase 25.11.2005 13:11

А если FROM thread AS t сделать - не поможет? Может, майскл не может дублирование имени переварить?

Madness 25.11.2005 13:22

BorLase
>А если FROM thread AS t сделать - не поможет?
Нет.

>Может, майскл не может дублирование имени переварить?
Дублирование какого имени? Если столбца, дык для этого и написано что thread, а оно на это и ругается :(

SergoZD
Спасибо, но осадок остался. Непонятно почему запрос то ошибочным считается.

SergoZD 25.11.2005 13:31

Madness
А если префикс таблицы будет не пустой, работать будет или таже ошибка?

Не будет работать, проверил...

Sheryld 25.11.2005 13:33

1. Можно попробовать использовать кавычки(`).
2. Непонятен смысл вот такой конструкции:

thread AS thread, subscribethread AS subscribethread

Ты создаешь alias таблицы, такой же как ее имя, если использовать везде имена, тогда не нужно вообще писать alias(tableName.fieldName), но тогда каждую таблицу в запросе нельзя будет использовать более одного раза, иначе возникнет неоднознаяная ситуация.

BorLase 25.11.2005 13:34

Цитата:

Сообщение от Madness
Непонятно почему запрос то ошибочным считается.

кажется, я догадываюсь, почему...

FROM
table1,
table2 LEFT JOIN table3 ON .....

видимо, в условии ON можно использовать только т2 и т3 поля - но не т1

а было именно так.

Sheryld 25.11.2005 13:38

Запись:

select from t1, t2

эквивалентна записи:

select from t1
inner join t2
on t1.field = t2.field

Madness 25.11.2005 14:15

BorLase
Да, похоже ты прав. Поменял местами таблицы во FROM и тоже заработало.
Более придирчива 5-ая версия к синтаксису стала.

Sheryld
Эт не я, а Jelsoft Enterprises Ltd :P Да и нет в этом криминала... пока 6-ая версия mysql не выйдет :ржать:

Всем спасибо.


Часовой пояс GMT +4, время: 05:32.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.