Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Неправильный синтаксис *= / 22 сообщений из 22, страница 1 из 1
18.03.2019, 10:19
    #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
18.03.2019, 10:30
    #39787579
iap
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
18.03.2019, 10:32
    #39787584
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неправильный синтаксис *=
Забыл сказать!
Первым делом надо выбросить запятые из FROM. И переписать, используя разные виды JOIN.
...
Рейтинг: 0 / 0
18.03.2019, 10:33
    #39787585
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неправильный синтаксис *=
iapЗабыл сказать!
Первым делом надо выбросить запятые из FROM. И переписать, используя разные виды JOIN.Ни в коем случае не смешивайте JOINы и запятые в одном и том же FROM!
...
Рейтинг: 0 / 0
18.03.2019, 10:39
    #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
18.03.2019, 10:40
    #39787589
faensi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неправильный синтаксис *=
Парни ноль в этом, помогите поправить
...
Рейтинг: 0 / 0
18.03.2019, 10:56
    #39787604
iap
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
18.03.2019, 11:04
    #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
18.03.2019, 12:46
    #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
18.03.2019, 13:07
    #39787719
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неправильный синтаксис *=
faensi,

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

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

btw синтаксис join также является устаревшим (сейчас используется указание inner join). На первый взгляд всё верно.Чо за фигня?
...
Рейтинг: 0 / 0
18.03.2019, 13:39
    #39787753
iap
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
18.03.2019, 13:47
    #39787760
iap
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
18.03.2019, 14:19
    #39787780
faensi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неправильный синтаксис *=
Всем спасибо!!!!! Вроде все формирует как и требовалось.
...
Рейтинг: 0 / 0
18.03.2019, 14:52
    #39787826
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неправильный синтаксис *=
iap,

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

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

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

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

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

TOP 1 также устаревшее, из этой же категории, надо писать TOP (1) в modern стиле.Про TOP уже давно было официально объявлено. Как и про точку с запятой.
А так дело вкуса... Писать INNER или OUTER или не писать? Писать AS в объявлении алиаса или нет?
Надо ставить FROM перед именем таблицы в DELETE или нет? То же самое - с INTO в INSERTе и MERGE.
Я, например, никогда не пишу лишнего.
...
Рейтинг: 0 / 0
18.03.2019, 17:35
    #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
18.03.2019, 17:39
    #39787978
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неправильный синтаксис *=
iap,

да, Вы правы, INNER является вспомогательным словом. Вопрос личных предпочтений и внутренних стандартов.
...
Рейтинг: 0 / 0
21.03.2019, 08:41
    #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
21.03.2019, 10:20
    #39789396
iap
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
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Неправильный синтаксис *= / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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