![]() |
|
Модераторы: Akina |
![]()
|
|
| Elfix |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 13.7.2005 Репутация: нет Всего: нет |
Доброго времени!
У меня возникла сложность с проектирование базы данных под следующую цель. Необходимо как то организовать таблицу PL и запрос SELECT к ней чтобы получить выборку такого вида: Дата Субконто1 Субконто2 Сумма 01.02.2001 Реализация товара Контрагент 1 -34593.00 01.02.2001 Аренда производственного помещения Контрагент 1 -349200.00 02.02.2001 Амортизация оборудования Оборудование 1 -230.00 02.03.2001 Затраты на электроэнергию Контрагент 2 -43298.00 Список контрагентов хранится в таблице contragents: id int autoincrement contragent_name VARCHAR(50) Список оборудования в таблице equipments: id int autoincrement equipment_name VARCHAR(50) Задача в том, чтобы хранить в полях субконто1 и субконто2 не текстовые значения, а ссылки на идентификаторы объектов из разных таблиц, а селектом каким-то образом показывать корректные значения. Может быть криво выразился, но довольно трудно объяснить В общем такое как то реализовано в 1С, когда поле может хранить в себе ссылку на объект из одной из таблиц. Я так подразумеваю потребуется создать доп. поля типа ВидСубконто. Но не могу понять как тогда наиболее производительнее строить запрос SELECT? |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 10 Всего: 161 |
rtfm [left] join
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Elfix |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 13.7.2005 Репутация: нет Всего: нет |
Сложность в том, что ссылки в поле могут пересекаться, и простым LEFT JOIN сделать не получится, так как не понятно какую таблицу к какому полю цеплять, и уж тем более непонятно из какой таблицы подставлять значение: из оборудования или из контрагентов. Просто в субконто2 может быть или контрагент или оборудование в зависимости от того какое значение приняло поле Субконто1. Т. е. если Субконто1 Амортизация, тогда в субконто2 должно показываться оборудование которое самортизировалось, если же Субконто1 "Реализация товара", тогда нужно в Субконто2 показать покупателя из таблицы Контрагенты. |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 10 Всего: 161 |
Если вам не понятно что к чему цеплять, то форум вам точно не поможет. Форум вам сможет помочь только если вы ему объясните критерии объединения. Тогда джойним и то и другое, а выводим, согласно описанной вами логики. Джойним внешним соединением. Это сообщение отредактировал(а) Zloxa - 19.5.2011, 22:07 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Elfix |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 13.7.2005 Репутация: нет Всего: нет |
У меня собственно говоря вопрос в том как более эффективно организовать данные? С точки зрения производительности и с точки зрения обслуживания базы ( в том плане, если добавится еще таблица с возможными значениями субконто, придется добавлять условия в селект). |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 10 Всего: 161 |
Выделить одну сущность - субконто, наделить ее необходимыми атрибутами. Расширенные наборы свойств, специфичные для различного рода субконто вынести в отдельные сущности, находящиеся в отношении 1:1 с сущностью "субконто". Мне вообще не понятно в чем сложность. -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
![]()
|
| Правила форума "MS SQL" | |
|
|
Запрещается! Публиковать ссылки и обсуждать взлом чего бы то ни было.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MS SQL Server | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |