Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

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

Здравствуйте!
Имеется следующий набор.
Среда разработки: 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
Репутация: 351

icq: 433559969
skype: vys.yurka
По умолчанию

чуток не датянул)
Код:
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
Адрес: 32 RUS
Сообщений: 72
Репутация: 9
По умолчанию

Цитата:
Сообщение от 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
Репутация: 351

icq: 433559969
skype: vys.yurka
По умолчанию

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

Цитата:
Сообщение от 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
Адрес: 32 RUS
Сообщений: 72
Репутация: 9
Радость Спасибо!!!

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объединение двух таблиц исключая дубли 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


15:51.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.