Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Синтаксис в WHERE (Jurij) 31/12/2007 - 00:15:58
      Re: Синтаксис в WHERE (vi.k) 31/12/2007 - 07:15:20
      Re: Синтаксис в WHERE (ффф) 03/01/2008 - 04:15:23

> Original message text:
> From: Jurij - 31/12/2007 - 00:15:58
> Subject:Синтаксис в WHERE
> -----------------
> Никак не могу найти ошибку в синтаксисе:
>
> SELECT *
> FROM battle_request
> WHERE (br.id, br.timeout, br.cmt, br.hand_only, br.create_time, u.id id1, u.nick, u.level, u.last_activity_time, u.clan_id, c.icon, c.name clan_name1, u_cmd2.id id2, u_cmd2.nick command2_nick, u_cmd2.level command2_level, u_cmd2.clan_id clan_id2, c2.icon icon2, c2.name clan_name2)
> FROM (battle_request br, user_in_battle ub, users u)
> LEFT JOIN (user_in_battle cmd2) ON (cmd2.battle_id = br.id)
> AND cmd2.command = "2"
> LEFT JOIN (users u_cmd2) ON (cmd2.user_id = u_cmd2.id)
> LEFT JOIN (clan c) ON (u.clan_id = c.id)
> LEFT JOIN (clan c2) ON (u_cmd2.clan_id = c2.id)
> WHERE br.id = ub.battle_id
> AND ub.user_id = u.id
> AND br.battle_type = "0"
> AND br.status = "0"
> AND ub.command = "1"
>
> В чём проблема? На MySql5 не работает.
>


From: vi.k - 31/12/2007 - 07:15:20
Subject:Синтаксис в WHERE
-----------------
> На MySql5 не работает.
А где такое может работать? Мне почему-то захотелось сказать: простите, но в вашей ошибке нет никакого синтаксиса. Хотя, кто знает - а вдруг действительно такое может где-то иметь место :-?

Мне же, честно говоря, совсем непонятно - что вы хотели. Такое чувство, что вы произвольным образом склеили два запроса. Причём в совершенно случайном порядке: в одном SELECT'е у вас два WHERE и два FROM.

Возможно достаточно будет убрать первый FROM и первый WHERE, перечисление полей из первого WHERE перенести в предназначенное для этого место. А для повышения логичности запроса подправить второй FROM: соединить первые три таблицы через JOIN и, соответственно, перенести условия их соединения из WHERE.

Возможно запрос должен выглядеть так:

SELECT br.id, br.timeout, br.cmt, br.hand_only, br.create_time, u.id id1, u.nick, u.level, u.last_activity_time, u.clan_id, c.icon, c.name clan_name1, u_cmd2.id id2, u_cmd2.nick command2_nick, u_cmd2.level command2_level, u_cmd2.clan_id clan_id2, c2.icon icon2, c2.name clan_name2
FROM battle_request br
JOIN user_in_battle ub ON br.id = ub.battle_id,
JOIN users u ON ub.user_id = u.id,
LEFT JOIN user_in_battle cmd2 ON cmd2.battle_id = br.id AND cmd2.command = "2"
LEFT JOIN users u_cmd2 ON cmd2.user_id = u_cmd2.id
LEFT JOIN clan c ON u.clan_id = c.id
LEFT JOIN clan c2 ON u_cmd2.clan_id = c2.id
WHERE br.battle_type = "0"
AND br.status = "0"
AND ub.command = "1"

Вместо скобок заключайте названия полей и таблиц в кавычки ``.
Пример: JOIN `user_in_battle` `ub` ON `br`.`id` = `ub`.`battle_id`

С Новым годом! :)


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
32699



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |