Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.02.2021, 13:35   #1
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию Проблема с выбранными данными в SQL

Добрый день форумчане!

У меня проблема с SQL когда делаю поиск в выбранных данных.
Программа ругается на недопустимое имя столбца "Имя"
Цитата:
SELECT
Users.Id_User as Номер,
Users.Name1 as Имя,
Users.Fam as Фамилия,
Users.Otche as Отчество,
Users.vTelphone as ВнТел,
Users.Telphone as ГорТел,
Users.Fax as Факс,
Users.Zdanie as Здание,
Users.TexNomer as ТехВн,
Users.TexNomerGorod as ТехГор,
Pod.Name as Подразделение,
Strukture.Name as Структура,
Users.Name as Должность
FROM
Pod, Strukture, Users
WHERE
Users.ParentId = Strukture.ID
AND
Users.ParentId_ = Pod.ID
AND
Имя LIKE '%Иван%'
Работает вот так
Цитата:
SELECT
Users.Id_User as Номер,
Users.Name1 as Имя,
Users.Fam as Фамилия,
Users.Otche as Отчество,
Users.vTelphone as ВнТел,
Users.Telphone as ГорТел,
Users.Fax as Факс,
Users.Zdanie as Здание,
Users.TexNomer as ТехВн,
Users.TexNomerGorod as ТехГор,
Pod.Name as Подразделение,
Strukture.Name as Структура,
Users.Name as Должность
FROM
Pod, Strukture, Users
WHERE
Users.ParentId = Strukture.ID
AND
Users.ParentId_ = Pod.ID
AND
Name1 LIKE '%Иван%'
Хотя когда сортирую по столбцу "Имя"не ругается
Сортирую так и все ОК
Цитата:
SELECT
Users.Id_User as Номер,
Users.Name1 as Имя,
Users.Fam as Фамилия,
Users.Otche as Отчество,
Users.vTelphone as ВнТел,
Users.Telphone as ГорТел,
Users.Fax as Факс,
Users.Zdanie as Здание,
Users.TexNomer as ТехВн,
Users.TexNomerGorod as ТехГор,
Pod.Name as Подразделение,
Strukture.Name as Структура,
Users.Name as Должность
FROM
Pod, Strukture, Users
WHERE
Users.ParentId = Strukture.ID
AND
Users.ParentId_ = Pod.ID
ORDER BY Имя ASC
Голову ломаю не могу понять в чем проблема
Будьте добры подскажите пожалуйста почему первый запрос не работает?

Последний раз редактировалось Aliens_wolfs; 21.02.2021 в 20:28.
Aliens_wolfs вне форума Ответить с цитированием
Старый 21.02.2021, 19:02   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

where раьотает "ДО получения набора" и поэтому "вынужден" использовать ИМЕНА имеющиеся в таблицах БД.

order сортирует данные имеющиеся в НД и "понимает" (знает) имена(алиасы) полей НД.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 21.02.2021, 20:05   #3
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

но тогда еще вопрос
Цитата:
SELECT
Users.Id_User,
Users.Name1,
Users.Fam,
Users.Otche,
Users.vTelphone,
Users.Telphone,
Users.Fax,
Users.Zdanie,
Users.TexNomer,
Users.TexNomerGorod,
Pod.Name,
Strukture.Name,
Users.Name

FROM
Pod, Strukture, Users
WHERE
Users.ParentId = Strukture.ID
AND
Users.ParentId_ = Pod.ID
AND
Name LIKE '%Иван%'
Так БД создает свои имена столбцов в тех что я выделил они там одинаковы.

Создаются из них столбцы Name, Name_1, Name_2, по ним тоже поиск не работает, тоже пишет не допустимые имена столбцов, как тогда поиск организовать по этим столбцам?
Наверное придется создавать временную таблицу и через нее уже делать поиск данных

Последний раз редактировалось Aliens_wolfs; 21.02.2021 в 20:38.
Aliens_wolfs вне форума Ответить с цитированием
Старый 22.02.2021, 09:59   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
тоже пишет не допустимые имена столбцов
Неоднозначные? (т.е. имеющиеся более чем в одном использованной таблице).

уточнить из какой таблицы(алиаса таблицы) использовать.
Код:
pod.Name like ...
кроме того существуют т.н. зарезервированные слова.
использование их в качестве имен полей, таблиц как раз и может приводить к описанным выше проблемам.

попробуйте переименовать поле NAME в { NAME_| _NAME | NAMEX | ... } (любое из ...)
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 22.02.2021 в 10:07.
evg_m вне форума Ответить с цитированием
Старый 22.02.2021, 14:36   #5
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Цитата:
попробуйте переименовать поле NAME в { NAME_| _NAME | NAMEX | ... } (любое из ...)
Так тоже делал ошибка в имени столбца
заработало вот таким способом через переменную но можно и через временную таблицу тоже работает
Цитата:
DECLARE @TelSprav TABLE
(Номер INT,
Имя NVARCHAR(max),
Фамилия NVARCHAR(max),
Отчество NVARCHAR(max),
ВнТел NVARCHAR(max),
ГорТел NVARCHAR(max),
Факс NVARCHAR(max),
Здание NVARCHAR(max),
ТехВн NVARCHAR(max),
ТехГор NVARCHAR(max),
Подразделение NVARCHAR(max),
Структура NVARCHAR(max),
Должность NVARCHAR(max))
INSERT INTO @TelSprav
SELECT
Users.Id_User,
Users.Name1,
Users.Fam,
Users.Otche,
Users.vTelphone,
Users.Telphone,
Users.Fax,
Users.Zdanie,
Users.TexNomer,
Users.TexNomerGorod,
Pod.Name,
Strukture.Name,
Users.Name
FROM
Users, Pod, Strukture
WHERE
Users.ParentId = Strukture.ID
AND
Users.ParentId_ = Pod.ID
SELECT * FROM @TelSprav
WHERE
Имя LIKE '%Иван%'

Последний раз редактировалось Aliens_wolfs; 22.02.2021 в 15:43.
Aliens_wolfs вне форума Ответить с цитированием
Старый 22.02.2021, 18:32   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
Так тоже делал ошибка в имени столбца
переименовывать надо не в запросе а в ТАБЛИЦЕ базы данных.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 22.02.2021, 18:35   #7
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Цитата:
переименовывать надо не в запросе а в ТАБЛИЦЕ базы данных.
Таблица базы данных она общая для организации, мне лишь можно выводить данные, менять ничего нельзя.

Рабочее решение выше в посте #5

Спасибо за ответы!

Последний раз редактировалось Aliens_wolfs; 23.02.2021 в 10:39.
Aliens_wolfs вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализация заполнения таблицы данными при помощи цикла (SQL) Gerts Помощь студентам 0 07.05.2017 19:39
Заполнение таблицы данными через SQL запрос nata-khramenkova Помощь студентам 3 18.03.2014 13:55
Работа с данными sql- Ошибка в запросе?(visual studio 2012 C#) Onni Помощь студентам 8 20.05.2013 16:39
Работа с данными sql (visual studio 2012 C#) Onni Помощь студентам 0 20.05.2013 11:29
Генератор заполнения таблиц данными (SQL+Delphi) Анн Помощь студентам 0 09.12.2010 20:11