У меня есть база данных MySQL со следующей структурой таблицы:
TransactionType: Transaction_Amount, Transaction_ID, Transaction_Form
Транзакция: Transaction_ID, временная метка
Покупка: Transaction_ID, Item_ID
Элементы: Item_ID, Client_ID
Это действительно вопрос из двух частей (пожалуйста, дайте мне знать, если я должен опубликовать их как два отдельных вопроса)
1) TransactionType.Transaction_Form - это, по существу, столбец, определяющий, была ли транзакция денежной или кредитной. Есть ли способ объединить эти два запроса?
SELECT SUM(Transaction_Amount)
FROM Transaction_Type WHERE Transaction_Form = 'cash'
и
SELECT SUM(Transaction_Amount)
FROM Transaction_Type WHERE Transaction_Form = 'credit'
2) Мне нужно выбрать эти два параметра transaction_amount на основе используемого client_id.
Единственный способ, которым я могу это сделать, это что-то вроде:
SELECT Transaction_Amount FROM Transaction_Type
JOIN Transaction ON Transaction_Type.Transaction_ID=Transaction.Transaction_ID
JOIN Purchase ON Transaction.Transaction_ID = Purchase.Transaction_ID
JOIN Items ON Purchase.Item_ID = Item.Item_ID
WHERE Items.Client_ID = $clientId
Что, очевидно, не все так красиво...
Нужно ли добавить столбец client_id в транзакцию? Было бы лишним?
-Спасибо
Использование:
SELECT SUM(tt.transaction_amount)
FROM TRANSACTION_TYPE tt
WHERE tt.transaction_form IN ('cash', 'credit')
... если вы хотите, чтобы transaction_amount использовался как для комбинированных. Если вы хотите, чтобы они были разделены, используйте:
SELECT tt.transaction_form,
SUM(tt.transaction_amount)
FROM TRANSACTION_TYPE tt
WHERE tt.transaction_form IN ('cash', 'credit')
GROUP BY tt.transaction_form
Использование:
SELECT tt.transaction_amount
FROM TRANSACTION_TYPE tt
JOIN PURCHASE p ON p.transaction_id = tt.transaction_id
JOIN ITEMS i ON i.item_id = p.item_id
WHERE i.client_id = ?
1:
SELECT transaction_form, SUM(transaction_amount)
FROM transaction_type
GROUP BY transaction_form
transaction_form
, а не только для наличных и кредитов.