2013-06-05 3 views
1

Во-первых, как отказ от ответственности, я немного узнаю о SQL/LINQ через C#. На самом деле я очень зеленый. Я быстро устал от использования типовых баз данных, заполненных данными, и выполняя запросы, заданные в самых простых ситуациях. Эта информация представлена ​​таким образом, потому что основное внимание уделяется C# и визуальному программированию, а не волосам SQL или даже LINQ, если на то пошло.Должен ли я создать представление или другую таблицу?

Несмотря на это, я решил преобразовать простое приложение, которое я написал с использованием текстовых (CSV) файлов для хранения. Приложение отслеживает три возможных кредиторской задолженности, где 0 - 3 записи будут существовать на определенную дату. Я смог создать базу данных и отдельные таблицы для каждого контракта и создать приложение, которое вставляет существующие записи в базу данных с использованием классов LINQ to SQL.

Теперь у меня есть другое приложение, которое используется для добавления записей через калькулятор контракта или непосредственно через BindingSourceNavigator и DataGridView. Каждая таблица имеет в общей сложности четыре столбца: Date, GrossPay, TaxAmount и NetPay, Date - первичный ключ. Я хотел бы просмотреть записи по дате, когда у меня есть TotalGross, TotalTax, TotalNet и столбец для каждой таблицы контрактов GrossPay для этой даты.

Что исправить подход к этому - запрос, запрос LINQ, отдельную таблицу или другое? Кажется, что таблица была бы «самой простой», по крайней мере, с точки зрения моих способностей, но, похоже, ненужное копирование записей. Я попытался «связать» таблицы, но ни один другой столбец не будет уникальным или основным.

Любые предложения были бы замечательными.


Разъяснение:

Три таблицы имеют формат:

| Дата | GrossPay | TaxAmount | NetPay | ... у каждого есть другие не общие ... |

** Каждая таблица имеет специфические данные, используемые для расчета общих столбцов на основе типа контракта



Я хотел бы, чтобы просмотреть все записи «сгруппированы» по дате, так что каждая представлены как:

| Дата | TotalGross | TotalTax | TotalNet | Table1Gross | Table2Gross | Table3Gross |

** «Всего» столбцы представляют собой суммы соответствующих столбцов всех записей, разделяющих дату.

** Один или два из «таблицы (п) Gross» может быть равен нулю


+0

Его немного сложно понять, что вы пытаетесь сделать в этом вопросе, можете ли вы его прояснить? – dcarson

ответ

0

Я думаю, что вы спрашиваете, если вы можете выбрать записи из трех различных таблиц по дате для столбцов они есть вместе?

Если это так, вам нужно сделать союз.

В вашем случае это может выглядеть примерно так в SQL. обратите внимание, что я сделал фиктивный столбец для обозначения источника записи (который вы можете захотеть)

SELECT Date, GrossPay, TaxAmount, NetPay, 'Table1' as Source FROM Table1 
UNION 
SELECT Date, GrossPay, TaxAmount, NetPay, 'Table2' as Source FROM Table2 
UNION 
SELECT Date, GrossPay, TaxAmount, NetPay, 'Table3' as Source FROM Table3 
WHERE Date = '2013-05-05' 

Я бы не заморачиваться с точки зрения и, безусловно, не реплицировать данные с помощью отдельной таблицы.

+0

Спасибо за ваш ответ. У меня нет проблемы с объединением целых таблиц на основе некоторых ограничений. То, что это заканчивается, - это индивидуальные списки трех таблиц. Спрашивая, что я видел другие примеры вставки в несколько таблиц. Является ли ваш совет не делать этого на основе больших наборов данных? Было бы самое большее, и редко, четыре записи, вставленные в день на общую сумму <1600 в год. – ChiefTwoPencils

+0

С точки зрения количества записей, это незначительно, однако репликация данных - плохая идея. – dcarson

Смежные вопросы