powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Неправильный синтаксис *=
22 сообщений из 22, страница 1 из 1
Неправильный синтаксис *=
    #39787571
faensi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго дня!

Заранее прошу не пинать (в темен полный ноль) а помочь.

Есть некая программа, которая после переноса базы с sql 2008 в sql 2017 при формировании отчета (Fast Reports) выдает ошибку - Неправильный синтаксис *=

Нашел запрос который видимо ее вызывает:

From question,persona, address,sp_organization,sp_area
Where question.persona_id = persona.id and
persona.address_ID = address.ID AND
question.korr_code = sp_organization.code and
address.area_code *= sp_area.code and
question.date_reg >= :date and
question.date_reg<= :date1 and
question.date_do >= :date2 and
question.date_do <= :date3

Видимо беда в этом:
Ссылка

Ребят помогите переделать данный запрос.

Заранее, Спасибо!
...
Рейтинг: 0 / 0
Неправильный синтаксис *=
    #39787579
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faensi,

*= в WHERE асолютно запрещено ещё в SQL2005!

Необходимо просканировать все объекты в поисках *= и =*
и заменить на LEFT JOIN и RIGHT JOIN соответственно во FROMе.

С удовольствием вспоминаю, как я этим занимался целую неделю в 2005 году!

Выполните:
Код: sql
1.
2.
3.
4.
SELECT type,name
FROM sys.objects
WHERE OBJECT_DEFINITION(object_id) LIKE N'%*=%'
   OR OBJECT_DEFINITION(object_id) LIKE N'%=*%';
...
Рейтинг: 0 / 0
Неправильный синтаксис *=
    #39787584
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл сказать!
Первым делом надо выбросить запятые из FROM. И переписать, используя разные виды JOIN.
...
Рейтинг: 0 / 0
Неправильный синтаксис *=
    #39787585
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapЗабыл сказать!
Первым делом надо выбросить запятые из FROM. И переписать, используя разные виды JOIN.Ни в коем случае не смешивайте JOINы и запятые в одном и том же FROM!
...
Рейтинг: 0 / 0
Неправильный синтаксис *=
    #39787588
faensi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощения, тяжело понять(((

Вот весь код:

Select question.id, persona.fm,persona.im,persona.ot, question.date_reg,question.result_body, question.korr_num,
dbo.GetGpNumPersona(question.persona_id,question.curyear) as gp, persona.email,
question.date_reg,question.num,question.curyear,question.question_body,sp_organization.name,sp_area.name,
isnull(case
when rtrim(address.postindex)<>'' then rtrim(address.postindex)+', '
else ''
end,'')+
isnull((select sp_oksmt.krnaim from sp_oksmt where sp_oksmt.kod=address.country_code),'')+', '+
isnull(case
when not address.subject_code is null then
(select sp_kladrw_name.name+' '+sp_socr.name+', ' from sp_kladrw_name,sp_kladrw,sp_socr
where sp_kladrw.code=address.subject_code and
sp_kladrw.socr_code = sp_socr.code and
sp_kladrw.name_code = sp_kladrw_name.code)
end,'')+
isnull(case
when not address.raion_code is null then
(select sp_kladrw_name.name+' '+sp_socr.name+', ' from sp_kladrw_name,sp_kladrw,sp_socr
where sp_kladrw.code=address.raion_code and
sp_kladrw.socr_code = sp_socr.code and
sp_kladrw.name_code = sp_kladrw_name.code)
end,'')+
isnull(case
when not address.city_code is null then
(select sp_socr.name+' '+sp_kladrw_name.name+', ' from sp_kladrw_name,sp_kladrw,sp_socr
where sp_kladrw.code=address.city_code and
sp_kladrw.socr_code = sp_socr.code and
sp_kladrw.name_code = sp_kladrw_name.code)
end,'')+
isnull(case
when not address.settlement_code is null then
(select sp_socr.name+' '+sp_kladrw_name.name+', ' from sp_kladrw_name,sp_kladrw,sp_socr
where sp_kladrw.code=address.settlement_code and
sp_kladrw.socr_code = sp_socr.code and
sp_kladrw.name_code = sp_kladrw_name.code)
end,'')+
isnull(case
when not address.street_code is null then
(select sp_socr.name+' '+sp_streetw_name.name+', ' from sp_streetw_name,sp_streetw,sp_socr
where sp_streetw.code=address.street_code and
sp_streetw.socr_code = sp_socr.code and
sp_streetw.name_code = sp_streetw_name.code)
end,'')+
isnull(case
when address.dom<>'' then +rtrim(address.dom)
else ''
end,'')+
isnull(case
when address.kor<>'' then '/'+rtrim(address.kor)
else ''
end,'')+
isnull(case
when address.kvr<>'' then ', кв.'+rtrim(address.kvr)
else ''
end,'') as addr
From question,persona, address,sp_organization,sp_area
Where question.persona_id = persona.id and
persona.address_ID = address.ID AND
question.korr_code = sp_organization.code and
address.area_code *= sp_area.code and
question.date_reg >= :date and
question.date_reg<= :date1 and
question.date_do >= :date2 and
question.date_do <= :date3
...
Рейтинг: 0 / 0
Неправильный синтаксис *=
    #39787589
faensi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Парни ноль в этом, помогите поправить
...
Рейтинг: 0 / 0
Неправильный синтаксис *=
    #39787604
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faensiПарни ноль в этом, помогите поправить

Код: sql
1.
2.
3.
4.
5.
6.
7.
FROM question q
JOIN persona p ON q.persona_id=p.id
JOIN address a ON p.address_ID=a.id
JOIN sp_organization o ON q.korr_code=o.code
LEFT JOIN sp_area r ON a.area_code=r.code
WHERE q.date_reg BETWEEN :date AND :date1
  AND q.date_do BETWEEN :date2 AND :date3;
...
Рейтинг: 0 / 0
Неправильный синтаксис *=
    #39787609
faensi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iapfaensiПарни ноль в этом, помогите поправить

Код: sql
1.
2.
3.
4.
5.
6.
7.
FROM question q
JOIN persona p ON q.persona_id=p.id
JOIN address a ON p.address_ID=a.id
JOIN sp_organization o ON q.korr_code=o.code
LEFT JOIN sp_area r ON a.area_code=r.code
WHERE q.date_reg BETWEEN :date AND :date1
  AND q.date_do BETWEEN :date2 AND :date3;



К сожалению теперь ошибка:

Не удалось привязать составной идентификатор "question.id"
...
Рейтинг: 0 / 0
Неправильный синтаксис *=
    #39787693
faensi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если запрос сделать вида:

FROM question
JOIN persona ON question.persona_id = persona.id
JOIN address ON persona.address_ID = address.ID
JOIN sp_organization ON question.korr_code = sp_organization.code
LEFT OUTER JOIN sp_area ON address.area_code = sp_area.code
WHERE question.date_reg BETWEEN :date AND :date1 AND question.date_do BETWEEN :date2 AND :date3

Запрос отрабатывает, но корректно ли это? не приведет ли к другим проблемам такое исполнение?
...
Рейтинг: 0 / 0
Неправильный синтаксис *=
    #39787719
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faensi,

btw синтаксис join также является устаревшим (сейчас используется указание inner join). На первый взгляд всё верно.
...
Рейтинг: 0 / 0
Неправильный синтаксис *=
    #39787731
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосовfaensi,

btw синтаксис join также является устаревшим (сейчас используется указание inner join). На первый взгляд всё верно.
сами придумали ли где документ есть?
...
Рейтинг: 0 / 0
Неправильный синтаксис *=
    #39787751
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосовfaensi,

btw синтаксис join также является устаревшим (сейчас используется указание inner join). На первый взгляд всё верно.Чо за фигня?
...
Рейтинг: 0 / 0
Неправильный синтаксис *=
    #39787753
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faensiiapпропущено...


Код: sql
1.
2.
3.
4.
5.
6.
7.
FROM question q
JOIN persona p ON q.persona_id=p.id
JOIN address a ON p.address_ID=a.id
JOIN sp_organization o ON q.korr_code=o.code
LEFT JOIN sp_area r ON a.area_code=r.code
WHERE q.date_reg BETWEEN :date AND :date1
  AND q.date_do BETWEEN :date2 AND :date3;




К сожалению теперь ошибка:

Не удалось привязать составной идентификатор "question.id"Заметьте: поля question.id я даже не писал! Зато скопипастил у вас question.persona_id
...
Рейтинг: 0 / 0
Неправильный синтаксис *=
    #39787760
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapВладислав Колосовfaensi,

btw синтаксис join также является устаревшим (сейчас используется указание inner join). На первый взгляд всё верно.Чо за фигня? https://docs.microsoft.com/ru-ru/sql/t-sql/queries/from-transact-sql?view=sql-server-2017 <join_type> ::=
[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
JOINУ меня просто пока нет ссылки на более новый официальный Help. 2017 - уже устарело?
...
Рейтинг: 0 / 0
Неправильный синтаксис *=
    #39787780
faensi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо!!!!! Вроде все формирует как и требовалось.
...
Рейтинг: 0 / 0
Неправильный синтаксис *=
    #39787826
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iap,

встречал где-то... У меня память не энциклопедическая. В любом случае, bеst practices писать однотипно.

TOP 1 также устаревшее, из этой же категории, надо писать TOP (1) в modern стиле.
...
Рейтинг: 0 / 0
Неправильный синтаксис *=
    #39787833
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосовiap,

встречал где-то... У меня память не энциклопедическая. В любом случае, bеst practices писать однотипно.

TOP 1 также устаревшее, из этой же категории, надо писать TOP (1) в modern стиле.
если разбавить фантазию ложкой правды, это всё оправдает...
...
Рейтинг: 0 / 0
Неправильный синтаксис *=
    #39787845
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосовiap,

встречал где-то... У меня память не энциклопедическая. В любом случае, bеst practices писать однотипно.

TOP 1 также устаревшее, из этой же категории, надо писать TOP (1) в modern стиле.Про TOP уже давно было официально объявлено. Как и про точку с запятой.
А так дело вкуса... Писать INNER или OUTER или не писать? Писать AS в объявлении алиаса или нет?
Надо ставить FROM перед именем таблицы в DELETE или нет? То же самое - с INTO в INSERTе и MERGE.
Я, например, никогда не пишу лишнего.
...
Рейтинг: 0 / 0
Неправильный синтаксис *=
    #39787969
faensi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iap,

Прошу (аналогичной) вашей помощи, не удается правильно расписать:

from persona p,question q,address,sp_clerk sc,
sp_resulttype sr,filter f
where q.id=f.id and
f.name=:name and
q.persona_id=p.id and
p.address_id=address.id and
q.kurator_code*=sc.code and
q.result_code*=sr.code
order by f.sort

Спасибо!
...
Рейтинг: 0 / 0
Неправильный синтаксис *=
    #39787978
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iap,

да, Вы правы, INNER является вспомогательным словом. Вопрос личных предпочтений и внутренних стандартов.
...
Рейтинг: 0 / 0
Неправильный синтаксис *=
    #39789334
faensi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
faensiiap,

Прошу (аналогичной) вашей помощи, не удается правильно расписать:

from persona p,question q,address,sp_clerk sc,
sp_resulttype sr,filter f
where q.id=f.id and
f.name=:name and
q.persona_id=p.id and
p.address_id=address.id and
q.kurator_code*=sc.code and
q.result_code*=sr.code
order by f.sort

Спасибо!

Парни может кто еще знает как переписать данный запрос, просим помогите поправить
...
Рейтинг: 0 / 0
Неправильный синтаксис *=
    #39789396
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faensifaensiiap,

Прошу (аналогичной) вашей помощи, не удается правильно расписать:

from persona p,question q,address,sp_clerk sc,
sp_resulttype sr,filter f
where q.id=f.id and
f.name=:name and
q.persona_id=p.id and
p.address_id=address.id and
q.kurator_code*=sc.code and
q.result_code*=sr.code
order by f.sort

Спасибо!

Парни может кто еще знает как переписать данный запрос, просим помогите поправитьНо это же простая механическая задача. Тут даже головной мозг не нужен!
Для таблиц, которые связываются условиями без звёздочек, запятую между ними заменяем на JOIN,
а условия полей для этих таблиц записываем в ON.
Если поля таблиц связываются оператором *=, то пишем LEFT JOIN, если =*, - RIGHT JOIN, если *=* - FULL JOIN.
В ON записываем условия связи между соответствующими таблицами.
Нельзя писать условия в WHERE для правой таблицы LEFT JOIN и для левой таблицы RIGHT JOIN.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Неправильный синтаксис *=
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]