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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2012, 23:08   #1
Ol'ga
Форумчанин
 
Аватар для Ol'ga
 
Регистрация: 14.06.2008
Сообщений: 166
По умолчанию Связывания таблиц в запрсе SQL

Подскажите, где здесь ошибка, пол часа ищу уже не по глазам:
Код:
begin
If DBLookupComboBox5.Text <> '' then
DataModule1.ADOQuery1.Close;
DataModule1.ADOQuery1.SQL.Clear;
DataModule1.ADOQuery1.SQL.Text:='Select Tema, Ozenki, Posechaemosti, Gruppa, Students.Name, Lecturer.Name, Subject' + 'From Jurnal, Gruppi Where Gruppi.Gruppa = Jutnal.IdGruppa' + 
'From Jurnal, Students Where Students.Name=Jurnal.IDStudent' + 
'From Jurnal, Lecturer Where Lecturer.Name=Jurna.IDLecturer' + 
'From Jurnal, Subject Where Subject.Subject=Jurnal.IDSubject' + 
'AND UPPER(Gruppi.Gruppa) LIKE UPPER("%' + DBLookupComboBox5.Text + '%");';
DataModule1.ADOQuery1.Open;
 end;
Изображения
Тип файла: jpg 01.jpg (32.0 Кб, 65 просмотров)

Последний раз редактировалось Serge_Bliznykov; 25.05.2012 в 23:30.
Ol'ga вне форума Ответить с цитированием
Старый 25.05.2012, 23:34   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

во-первых, между словами должны быть пробелы (ошибка говорит о том, что не понимает, что такое за команда
SubjectFrom

во-вторых, так таблицы вообще не связывают!!
Вы бы основы SQL почитали!
в запросе ключевое слово FROM должно быть ОДИН раз (сейчас не рассматриваем подзапросы и объединение нескольких запросов через union - у вас ни того, ни другого нет!)

таблицы связываются либо через указание полей в конструкции where либо через join (left join, right join, inner join и т.д.)

через where выглядит примерно так:
Код:
select <НУжныеПоля> 
from Таблица1, Таблица2, Таблица3, Таблица4
where  Таблица1.ПолеСвязиСТаблицей2 = Таблица2.ПолеСвязиСТаблицей1
   and  Таблица2.ПолеСвязиСТаблицей3 = Таблица3.ПолеСвязиСТаблицей2
   and  Таблица3.ПолеСвязиСТаблицей4 = Таблица4.ПолеСвязиСТаблицей3
   and <если нужно - дополнительные условия отбора из таблиц1, 2, 3, 4>

Последний раз редактировалось Serge_Bliznykov; 25.05.2012 в 23:40.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.05.2012, 00:04   #3
Ol'ga
Форумчанин
 
Аватар для Ol'ga
 
Регистрация: 14.06.2008
Сообщений: 166
По умолчанию

Спасибо большое!
Ol'ga вне форума Ответить с цитированием
Старый 28.05.2012, 01:46   #4
Ol'ga
Форумчанин
 
Аватар для Ol'ga
 
Регистрация: 14.06.2008
Сообщений: 166
По умолчанию

Я сделала как вы подсказали, но он данные с таблиц не выводит(((
Ol'ga вне форума Ответить с цитированием
Старый 28.05.2012, 10:07   #5
mansuetudo
Пользователь
 
Регистрация: 08.11.2011
Сообщений: 46
По умолчанию

Покажите новый запрос.
mansuetudo вне форума Ответить с цитированием
Старый 28.05.2012, 21:21   #6
Ol'ga
Форумчанин
 
Аватар для Ol'ga
 
Регистрация: 14.06.2008
Сообщений: 166
По умолчанию

'Select Gruppi.Gruppa, Students.Name, Lecturer.Name, Subject.Sub, Jurnal.Tem, Jurnal.Ozenki, Jurnal.Posechaemosti' + ' From Jurnal, Gruppi, Students, Lecturer, Subject Where (Students.IDStudent = Jurnal.IDStudent)' + ' and (Gruppi.IDGruppi = Jurnal.IDGruppa)' + 'and (Lecturer.IDLecture = Jurnal.IDLecturer)' + 'and (Subject.IDSubject = Jurnal.IDSubject)' + '="%' + DBLookupComboBox5.Text + '%";';
Ol'ga вне форума Ответить с цитированием
Старый 28.05.2012, 21:29   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Убрал кавычки. Ваш текст после WHERE будет выглядеть примерно так:
Код:
Where (Students.IDStudent = Jurnal.IDStudent) and (Gruppi.IDGruppi = Jurnal.IDGruppa)and (Lecturer.IDLecture = Jurnal.IDLecturer)and (Subject.IDSubject = Jurnal.IDSubject)="%тут_текст%"
догадайтесь с трех раз - это нормально? И вообще - с такими вопросами в раздел для начинающих
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 28.05.2012, 21:43   #8
Ol'ga
Форумчанин
 
Аватар для Ol'ga
 
Регистрация: 14.06.2008
Сообщений: 166
По умолчанию

Спасибо, но все равно данные не выдает(((
Ol'ga вне форума Ответить с цитированием
Старый 29.05.2012, 10:01   #9
mansuetudo
Пользователь
 
Регистрация: 08.11.2011
Сообщений: 46
По умолчанию

Последнее условие, с текстом - оно зачем? Вы связываете две таблицы - Jurnal и Subject - по определённым полям, и что же ві хотите получить, приравняв эту связь к тексту комбобокса?
mansuetudo вне форума Ответить с цитированием
Старый 29.05.2012, 10:49   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

поясню, на что намекают господа Аватар и mansuetudo...

Цитата:
Код:
....and (Subject.IDSubject = Jurnal.IDSubject)="%тут_текст%"
ЭТО БРЕД!
вы связываете поля и приравниваете их тексту..

скорее всего окончание запроса должно было выглядеть примерно так:
Код:
....
' and (Subject.IDSubject = Jurnal.IDSubject)  ' +
' and UPPER(Gruppi.Gruppa) LIKE UPPER("%' + DBLookupComboBox5.Text + '%");'
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание таблиц SQL. Delphi RikkiTan Помощь студентам 2 01.05.2012 20:59
[SQL] Связь нескольких таблиц Never74 БД в Delphi 5 20.01.2012 17:27
Где ошибка в запрсе? Bendebej SQL, базы данных 7 30.03.2010 12:59
Создание новых таблиц в MS SQL SERVERE через SQL запрос в Delphi S_Yevgeniy Помощь студентам 1 27.10.2009 06:26
Выборка информации из 2 таблиц (SQL) frai БД в Delphi 10 10.11.2007 17:38