Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
2 / 2 / 1
Регистрация: 31.01.2012
Сообщений: 321
1

Таблицы и сложные запросы

29.07.2016, 13:37. Показов 614. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, моя задача, написать црм систему. Сначала идея была проста, но затем все свелось к такой вот иерархической структуре БД. 1- если структура по той или иной причине не корректна, то буду рад услышать комментарии либо критику. ( все потому что, мне кажется что таблицу клиенты и контакты надо поменять местами)
2 я понимаю, что надо написать такой запрос, на подобие
SQL
1
SELECT * FROM main_content, clients, accounts WHERE id=:(параметры)
и надо сделать так, чтобы вместо id показывалось наименование, например в таблице main_content(id, id_acc, id_contact и так далее), вместо id_acc и id_contact были значения других полей той же записи запроса. Подскажите как это реализовать на примере одном.
Миниатюры
Таблицы и сложные запросы  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.07.2016, 13:37
Ответы с готовыми решениями:

Сложные SQL запросы в adoquery
Здравствуйте, подскажите пожалуйста как выполнять сложные запросы типа declare p_zaiav...

Delphi SQL - сложные запросы
С двумя запросами не могу никак справиться. Таблицы Студент(НомерЗачётки, Фамилия,...

Сложные таблицы и работа с ними
Здравствуйте.Какая компонента подойдет для создания такой таблицы, и для связи с БД SQl. чтоб там...

Сложные запросы на 2 таблицы
Привет! Есть таблица со списком слов и таблица со связью записей из списка (слово в инфинитивной...

14
2 / 2 / 1
Регистрация: 31.01.2012
Сообщений: 321
29.07.2016, 14:27  [ТС] 2
Вот например мне надо при клике мыши по таблице узнать айди записи,и затем по айди записи узнать конкретный договор и вывести его данные на новом окне, делаю так, но выходит ошибка list out
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm10.FormShow(Sender: TObject);
begin
  Querydog.Close;
  Querydog.SQL.clear;
  Querydog.SQL.Add('select * from dogovors,contacts,main_content where (maincontent.id=:id) where maincontent.id_dogovor=doogovors.id');
  Querydog.Parameters.ParamByName('id').Value:=Form3.id;
  Querydog.Open;
  Edit1.Text:=Querydog.FieldByName('name_dog').Asstring;
  Edit2.Text:=Querydog.FieldByName('number_dog').AsString;
  DateTimePicker1.Date:=Querydog.FieldByName('date_start').AsDateTime;
  DateTimePicker2.Date:=Querydog.FieldByName('date_end').AsDateTime;
end;
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,129
Записей в блоге: 3
29.07.2016, 15:12 3
вы вообще вас запрос проверяли на правильность?
2 условия where говорят об обратном


ЗЫ и потом - что бы так работать с запросом вы должны быть уверены что он вернет 1 строку
0
2 / 2 / 1
Регистрация: 31.01.2012
Сообщений: 321
29.07.2016, 15:20  [ТС] 4
Там набросок во втором запросе
SQL
1
Querydog.SQL.Add('select * from dogovors,contacts,main_content where dogovors.id=:id') ;
сейчас так, и он только одну запись может выделить, по этому и вернет только одну
0
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
29.07.2016, 15:25 5
ОБЪЕДИНЕНИЕ ТАБЛИЦ
0
2 / 2 / 1
Регистрация: 31.01.2012
Сообщений: 321
29.07.2016, 15:52  [ТС] 6
SQL
1
2
3
4
5
6
7
  QueryLoadmain.close;
  QueryLoadmain.SQL.clear;
  QueryLoadmain.SQL.Add('select stadia.id, stadia.name_st, main_content.id_stadia, contacts.id, main_content.id_contacts, id_acc  ');
  QueryLoadmain.SQL.Add('from  main_content, stadia, contacts    ');
  QueryLoadmain.SQL.Add('where main_content.id_stadia = stadia.id and  ');
  QueryLoadmain.SQL.Add('main_content.id_conacts = contacts.id and  ');
  QueryLoadmain.SQL.Add('main_contents.id_acc = account.id  ');
Получилось что то такое, но интернал еррор выдает, и то что скинул northener, совершенно не то что мне необходимо.
0
1074 / 987 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
29.07.2016, 17:07 7
Цитата Сообщение от Владислав-2012 Посмотреть сообщение
и то что скинул northener, совершенно не то что мне необходимо.
Попробуйте сосредоточится...
ОБЪЕДИНЕНИЕ ТАБЛИЦ - это именно то что вам надо, если судить по фразе из первого поста:
Цитата Сообщение от Владислав-2012 Посмотреть сообщение
надо сделать так, чтобы вместо id показывалось наименование, например в таблице main_content(id, id_acc, id_contact и так далее), вместо id_acc и id_contact были значения других полей той же записи запроса.
Объединение это как раз и помогает сделать.
0
2 / 2 / 1
Регистрация: 31.01.2012
Сообщений: 321
29.07.2016, 17:18  [ТС] 8
и как мне найти id последней добавленной записи, у меня access 2010.

Добавлено через 51 секунду
SQL
1
2
3
4
QueryLoadmain.SQL.clear;
QueryLoadmain.SQL.Add('SELECT accounts.FIO, Clients.FIO, main_content.date_zvon, main_content.date_next, main_content.comments, stadia.name_st, main_content.price');
QueryLoadmain.SQL.Add('FROM accounts INNER JOIN (stadia INNER JOIN (Clients INNER JOIN (contacts INNER JOIN main_content ON contacts.id = main_content.id_contacts) ON Clients.id = contacts.id_clients) ON stadia.id = main_content.id_stadia) ON accounts.id = main_content.id_acc');
QueryLoadmain.open;
Вроде запрос отрабатывается как необходимо
0
1074 / 987 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
29.07.2016, 17:39 9
Цитата Сообщение от Владислав-2012 Посмотреть сообщение
как мне найти id последней добавленной записи, у меня access 2010
Например, так как показано в этом посте:
MS Access
0
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
30.07.2016, 01:34 10
Цитата Сообщение от Владислав-2012 Посмотреть сообщение
то что скинул northener, совершенно не то что мне необходимо
Либо невнимательно читаешь, либо плохо задаешь вопросы.
0
2 / 2 / 1
Регистрация: 31.01.2012
Сообщений: 321
30.07.2016, 16:09  [ТС] 11
Еще раз повторяю, то что скинули вы мне, не то что мне было нужно, оно косвенно похоже но не то, вопрос был конкретный, если вы его не поняли по каким то причинам, то не лучше ли уточнить, а не пенять на меня?
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,129
Записей в блоге: 3
30.07.2016, 20:12 12
Цитата Сообщение от Владислав-2012 Посмотреть сообщение
не то что мне было нужно
а что вам нужно?
0
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
31.07.2016, 01:23 13
Цитата Сообщение от Владислав-2012 Посмотреть сообщение
вопрос был конкретный
Вот на конкретный вопрос в топике я и ответил.
0
2 / 2 / 1
Регистрация: 31.01.2012
Сообщений: 321
01.08.2016, 09:52  [ТС] 14
бессмысленно с вами спорить, вы ничем не смогли мне помочь.
0
W
115 / 115 / 33
Регистрация: 16.04.2013
Сообщений: 750
05.08.2016, 09:29 15
Цитата Сообщение от Владислав-2012 Посмотреть сообщение
чтобы вместо id показывалось наименование
Цитата Сообщение от Владислав-2012 Посмотреть сообщение
у меня access 2010
В аксесе конструктор есть в нем и делайте запросы. Тогда и понятно будет нормальная структура таблиц или
Цитата Сообщение от Владислав-2012 Посмотреть сообщение
не корректна
0
05.08.2016, 09:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.08.2016, 09:29
Помогаю со студенческими работами здесь

сложные запросы
в целях самообразования нужен задачник (или что-то подобное) с множеством сложных запросов....

Сложные запросы
Есть 4 таблицы: блюдо (код блюда, название блюда) продукты (код продукта, название продукта,...

сложные запросы к бд
Пытаюсь сделать удаление нескольких щаписей из бд, с помощью doctrine 2 нашла что есть функция...

сложные запросы
Есть три аксесовских таблицы(Главная, Должность, и Зароботная_плата) связаные по столбце Ид_код...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru