У меня есть 3 разные таблицы транзакций, которые очень похожи, но имеют небольшие различия. Это связано с тем, что существует 3 различных типа транзакций; в зависимости от типа транзакции столбцы меняются, поэтому чтобы получить их в 3NF, мне нужно, чтобы они были в отдельных таблицах (верно?).
Как пример:
t1:
дата, пользователь, сумма
t2:
дата, пользователь, который, сумма
t3:
дата, пользователь, на что, количество
Теперь мне нужен запрос, который собирается получить все транзакции в каждой таблице для одного и того же пользователя, что-то вроде
выберите * из t1, t2, t3, где user = 'me';
(что, конечно, не работает).
Я изучаю операторы JOIN, но не нашел правильного способа сделать это. Спасибо.
РЕДАКТИРОВАТЬ: На самом деле мне нужны все столбцы из каждой таблицы, а не только те, которые одинаковы.
РЕДАКТИРОВАТЬ # 2: Да, наличие транзакции тип не нарушает 3NF, конечно, так что, возможно, мой дизайн совершенно не так. Вот что действительно происходит (это альтернативная валютная система):
- Операции между пользователями, как взаимный кредит. Таким образом, единицы меняются между пользователями.
- Инвентаризации - это физические вещи, внесенные в систему; пользователь получает единицы для этого.
- Потребления - это физические вещи, которые потребляются; пользователь должен платить за это.
|--------------------------------------------------------------------------|
| type | transactions | inventarizations | consumations |
|--------------------------------------------------------------------------|
| columns | date | date | date |
| | creditor(FK user) | creditor(FK user) | |
| | debitor(FK user) | | debitor(FK user) |
| | service(FK service)| | |
| | | asset(FK asset) | asset(FK asset) |
| | amount | amount | amount |
| | | | price |
|--------------------------------------------------------------------------|
(Обратите внимание, что «сумма» указана в разных единицах; это записи и расчеты по этим суммам. Вне рамок объяснения, почему, но это поля).
Таким образом, вопрос меняется на « Может / должно ли это быть в одной таблице или быть несколькими таблицами (как у меня сейчас)? "
Мне нужен ранее описанный оператор SQL для отображения текущих балансов.
(Должно ли это теперь стать новым вопросом или это нормально для редактирования?).
РЕДАКТИРОВАТЬ # 3: Поскольку РЕДАКТИРОВАНИЕ # 2 фактически преобразовывает это в новый вопрос, я также решил опубликовать новый вопрос . (Надеюсь, это нормально?).