SELECT *, (SELECT SUM(Amount) FROM 2_1_journal)
FROM 2_1_journal
WHERE TransactionPartnerName = ?
Это выбирает резюмирует Amount
из всего таблицы и «присоединяет» все строки, где TransactionPartnerName
является параметром свяжет в коде клиента.
Если вы хотите, чтобы ограничить сумму те же критерии, что и строки вы выбираете, просто включите его:
SELECT *, (SELECT SUM(Amount) FROM 2_1_journal WHERE TransactionPartnerName = ?)
FROM 2_1_journal
WHERE TransactionPartnerName = ?
целой другой вещи: имена таблиц, как 2_1_journal
сильных показатели разбитого проектирования баз данных. Если вы можете его переделать, вы должны посмотреть, как правильно нормализовать базу данных. Скорее всего, окупится много раз.
Что касается нормализации (добавлена позже):
Поскольку текущий дизайн использует ключи в именах таблиц (таких как 2
и 1
в 2_1_journal
), я быстро показать, как я думаю, что вы можете значительно улучшить этот дизайн. Допустим, что таблица 2_1_journal
имеет следующие данные (я только предполагаю здесь, потому что таблицы не были описаны еще нигде):
title | posted | content
------+------------+-----------------
Yes! | 2013-01-01 | This is just a test
2nd | 2013-01-02 | Another test
Этот материал относится к пользователю 2
в компании 1
. Но эй! Если вы посмотрите на строки, то тот факт, что эти данные принадлежат пользователю 2
в компании 1
, нигде не встречается.
Проблема заключается в том, что эта конструкция нарушает один из основных принципов проектирования базы данных: не используйте ключи в именах объектов (здесь: таблицы). Явное указание на то, что что-то очень не так, если вам нужно создавать новые таблицы, если добавляется что-то новое. В этом случае добавление нового пользователя или новой компании требует добавления новых таблиц.
Эта проблема устранена.Создать один таблица с именем journal
. Затем, используя одни и те же столбцы, но добавить еще два:
company | user | title | posted | content
--------+------+-------+------------+-----------------
1 | 2 | Yes! | 2013-01-01 | This is just a test
1 | 2 | 2nd | 2013-01-02 | Another test
Делая это, как это означает, что:
- вы никогда добавлять или изменять таблицы, если только изменения приложений.
- Выполнение объединений между компаниями или пользователями (и все остальное, что раньше было частью схемы именования таблиц, теперь возможно с помощью одного довольно простого оператора select).
- Обеспечение целостности легко: если вы обновляете приложение и хотите изменить таблицы, изменения не должны повторяться для каждой компании и пользователя. Что еще более важно, это снижает риск того, что приложение не синхронизируется с таблицами в базе данных (например, добавляет поле
comments
ко всем таблицам x_y_journal
, но забывает 5313_4324_journal
, заставляя приложение прерывать только при входе пользователя 5313
. Это та проблема, с которой вы не хотите иметь дело.
Я не пишу это, потому что это вопрос личного вкуса. Базы данных предназначены только для обработки таблиц, которые выложены, как я опишу выше . Конструкция, в которой вы используете объектные ключи как часть имен таблиц, содержит множество других связанных с ней проблем, с которыми очень сложно справиться.
В отношении имен таблиц проблема связана с '_'? Такие имена таблиц связаны с тем, что: i) таблица: «пользователи», и каждый пользователь имеет свой номер (например, номер два). ii) тогда номер таблицы «2_» связан только с конкретным пользователем. В эту таблицу включены компании, связанные с конкретными пользователями и компаниями, пронумерованы, например, 1, 2, 3, 4; iii) для каждой компании существует несколько таблиц, например, журнал, сотрудники, склад. Итак, 2_1_journal означает журнал для пользователя № 2, компания № 1. Я думаю о именах таблиц, и это было решение, которое я выбираю .... – user2360831
Вы рассматривали добавление столбца с именем '' Company'' в таблицы '' like'', '' журнал'' и т. д.? То, что вы делаете, крайне нетрадиционно и, вероятно, вызовет проблемы в будущем. – mzedeler
Здесь вы можете посмотреть учебники по нормализации: http://www.youtube.com/watch?v=ygfikznRjpw и http://holowczak.com/database-normalization/. – mzedeler