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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2013, 22:27   #1
DIMASIKXXX32
Пользователь
 
Регистрация: 26.01.2010
Сообщений: 72
Восклицание Объединение записей из двух таблиц

Здравствуйте!
Имеется следующий набор.
Среда разработки: Delphi XE2
Сервер баз данных: Firebird 2.52
Подскажите как объединить две таблицы так что бы в одной присутствовали две разных записи из другой, т.е. имеется таблица SP_TYPE_EQUIPMENT(Тип оборудования) и вторая SP_EMPLOYEES (Сотрудники) из которой должно подставляться Ф.И.О. в первую таблицу
Код:
1. структура таблицы (типы оборудования)

CREATE TABLE SP_TYPE_EQUIPMENT (
    SP_TQ_ID_RECORDS      INTEGER NOT NULL,/*Ключ*/
    SP_TQ_NAME_TYPE       VARCHAR(100),
    SP_TQ_NAME_SOCR_TYPE  VARCHAR(10),
    SP_TQ_id_EMPLOYEES_Create     INTEGER,/*Id сотрудника который добавил запись*/
    SP_TQ_id_EMPLOYEES_Edit       INTEGER,/*Id сотрудника который изменил запись*/
    SP_TQ_DCREATE         VARCHAR(20),
    SP_TQ_DEDIT           VARCHAR(20)
);

2. структура таблицы (Сотрудники)
CREATE TABLE SP_EMPLOYEES (
    SP_TE_ID_RECORDS      INTEGER NOT NULL,/*Ключ*/
    SP_TE_FIO       VARCHAR(100)
);
Так вот проблема в том как подставить вместо
Код:
SP_TQ_id_EMPLOYEES_Create     INTEGER,/*Id сотрудника который добавил запись*/
SP_TQ_id_EMPLOYEES_Edit       INTEGER,/*Id сотрудника который изменил запись*/
ФИО сотрудника. пробовал через JOIN, но не получается. просто SQL не так давно стал изучать.
Вот набросал приблизительно что хочу сделать (на название полей не обращайте внимание на скрине).



Да еще раньше когда не требовалось знать кто редактировал запись делал так и все работало нормально, до тех пор пока не понадобилось узнавать кто ее редактировал и подставлять из того же справочника сотрудников.
Код:
SELECT
    SP_TQ_ID_RECORDS,
    SP_TQ_NAME_TYPE,
    SP_TQ_NAME_SOCR_TYPE,
    SP_TQ_id_EMPLOYEES_Create,     /*Id сотрудника который добавил запись*/
    SP_TQ_DCREATE,
    SP_TQ_DEDIT,
    SP_TE_FIO
FROM
    SP_TYPE_EQUIPMENT
JOIN sp_employees
    on SP_TE_ID_RECORDS = SP_TQ_id_EMPLOYEES_Create

Последний раз редактировалось DIMASIKXXX32; 25.02.2013 в 22:37.
DIMASIKXXX32 вне форума Ответить с цитированием
Старый 25.02.2013, 23:21   #2
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

чуток не датянул)
Код:
SELECT SP_TQ_ID_RECORDS, 
    SP_TQ_NAME_TYPE,
    SP_TQ_NAME_SOCR_TYPE,
    SP_TQ_id_EMPLOYEES_Create,     /*Id сотрудника который добавил запись*/
    SP_TQ_id_EMPLOYEES_Edit,     /*Id сотрудника который изменил запись*/
    SP_TQ_DCREATE,
    SP_TQ_DEDIT,
    e1.SP_TE_FIO creator,
    e2.SP_TE_FIO editor,
FROM
    SP_TYPE_EQUIPMENT
JOIN sp_employees e1
    on e1.SP_TE_ID_RECORDS = SP_TQ_id_EMPLOYEES_Create
JOIN sp_employees e2
    on e2.SP_TE_ID_RECORDS = SP_TQ_id_EMPLOYEES_Edit
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 25.02.2013, 23:34   #3
DIMASIKXXX32
Пользователь
 
Регистрация: 26.01.2010
Сообщений: 72
По умолчанию

Цитата:
Сообщение от Yurk@ Посмотреть сообщение
чуток не датянул)
Код:
SELECT SP_TQ_ID_RECORDS, 
    SP_TQ_NAME_TYPE,
    SP_TQ_NAME_SOCR_TYPE,
    SP_TQ_id_EMPLOYEES_Create,     /*Id сотрудника который добавил запись*/
    SP_TQ_id_EMPLOYEES_Edit,     /*Id сотрудника который изменил запись*/
    SP_TQ_DCREATE,
    SP_TQ_DEDIT,
    e1.SP_TE_FIO creator,
    e2.SP_TE_FIO editor,
FROM
    SP_TYPE_EQUIPMENT
JOIN sp_employees e1
    on e1.SP_TE_ID_RECORDS = SP_TQ_id_EMPLOYEES_Create
JOIN sp_employees e2
    on e2.SP_TE_ID_RECORDS = SP_TQ_id_EMPLOYEES_Edit
Смотри создал уже новую таблицу попробовал так как ты посоветвал теперь вылетает ошибка.
Код:
SELECT
    SP_TQ_ID_RECORDS,
    SP_TQ_NAME_TYPE,
    SP_TQ_NAME_SOCR_TYPE,
    SP_TQ_UCREATE,/*id сотрудника который создал запись*/
    SP_TQ_UEDIT,/*id сотрудника который редактировал запись*/
    SP_TQ_DCREATE,
    SP_TQ_DEDIT,
    SP_EM_SURNAME_N_P/*Колонка из справочника сотрудники Фамилия И.О.*/
FROM
    SP_TYPE_EQUIPMENT 
JOIN SP_EMPLOYEES e1
    on e1.SP_EM_ID_RECORDS = SP_TQ_UCREATE
JOIN SP_EMPLOYEES e2
    on e2.SP_EM_ID_RECORDS = SP_TQ_UEDIT
Ошибка следующего типа:
Код:
Undefined name.
Dynamic SQL Error.
SQL error code = -204.
Ambiguous field name between table SP_EMPLOYEES and table SP_EMPLOYEES .(Неоднозначное имя поля между таблицами)
SP_EM_SURNAME_N_P.
DIMASIKXXX32 вне форума Ответить с цитированием
Старый 25.02.2013, 23:36   #4
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

ты не указал к какой из таблиц (е1 или е2) принадлежит SP_EM_SURNAME_N_P
(смотри пост выше. внимательней)
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 25.02.2013, 23:38   #5
DIMASIKXXX32
Пользователь
 
Регистрация: 26.01.2010
Сообщений: 72
По умолчанию

Цитата:
Сообщение от Yurk@ Посмотреть сообщение
ты не указал к какой из таблиц (е1 или е2) принадлежит SP_EM_SURNAME_N_P
(смотри пост выше. внимательней)
Код:
SELECT
    SP_TQ_ID_RECORDS,
    SP_TQ_NAME_TYPE,
    SP_TQ_NAME_SOCR_TYPE,
    SP_TQ_UCREATE,
    SP_TQ_UEDIT,
    SP_TQ_DCREATE,
    SP_TQ_DEDIT,
    e1.SP_EM_SURNAME_N_P,
    e2.SP_EM_SURNAME_N_P
FROM
    SP_TYPE_EQUIPMENT 
JOIN SP_EMPLOYEES e1
    on e1.SP_EM_ID_RECORDS = SP_TQ_UCREATE
JOIN SP_EMPLOYEES e2
    on e2.SP_EM_ID_RECORDS = SP_TQ_UEDIT
Да все получилось так как надо
DIMASIKXXX32 вне форума Ответить с цитированием
Старый 25.02.2013, 23:40   #6
DIMASIKXXX32
Пользователь
 
Регистрация: 26.01.2010
Сообщений: 72
Радость Спасибо!!!

Спасибо огромное Yurk@!!!
DIMASIKXXX32 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объединение двух таблиц исключая дубли AVGRIN Microsoft Office Excel 3 13.01.2013 21:52
Выборка и объединение двух таблиц. Maikroft Microsoft Office Access 4 25.01.2012 23:46
Запрос на сравнение записей двух таблиц. papos SQL, базы данных 0 25.09.2010 12:31
Объединение двух таблиц go2net Microsoft Office Excel 4 12.08.2010 00:11
Объединение двух таблиц jekis2506 Microsoft Office Excel 5 15.04.2009 08:34