0

memberandという名前の 2 つのテーブルexpenseと、bridge結合目的で使用されるテーブルがありexpense、そのパートナーであるメンバーに均等に分割する必要がありますexpense

UPDATE

//Create Member table
CREATE TABLE member(_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT);

// Create Expense table
CREATE TABLE expense (_id INTEGER PRIMARY KEY AUTOINCREMENT, amount INTEGER, expenseItemName TEXT);

// Create Bridge Table
CREATE TABLE bridge( bridgeId, _id INTEGER FOREGIN KEY REFERENCES member( _id )  ON DELETE CASCADE, exp_id INTEGER FOREGIN KEY REFERENCES expense(_id)  ON DELETE CASCADE);

、私はcount of present membersこのように取得しますMEMBER COUNT QUERY

SELECT count(*) FROM member, expense, bridge WHERE expense._id = bridge.exp_id AND member._id = bridge._id GROUP BY expense._id

membersこれにより、現在の正確なカウントが得られますが、このように現在のメンバー expenseに分割したい場合expenseDIVIDE EXPENSE.AMOUNT QUERY

SELECT expense._id, itemName, bridge._id, expense.amount/(SELECT count(*) FROM member, expense, bridge WHERE expense._id = bridge.exp_id AND member._id = bridge._id GROUP BY expense._id), (SELECT count(*) FROM member, expense, bridge WHERE expense._id = bridge.exp_id AND member._id = bridge._id GROUP BY expense._id) AS total_member, bridge.bridge_id FROM member, expense, bridge WHERE  (bridge._id = member._id  AND member._id = 2) AND expense._id = bridge.exp_id

このクエリを使用すると、 first に対して正しい結果が得られますが、他のexpense.amountレコードは正しくありません。この場合のようにすべての桁で除算するように変更する方法。前もって感謝します。MEMBER COUNT QUERY3,5DIVIDE EXPENSE.AMOUNT QUERYexpense.amountfirst3DIVIDE EXPENSE.AMOUNT QUERYexpense.amount3,5

4

2 に答える 2

0

1.0 を掛けるとうまくいくexpense.amountかもしれません。ここにSQLがあります

`SELECT expense._id, itemName, bridge._id, expense.amount * 1.0 /(SELECT count(*) FROM member, expense, bridge WHERE expense._id = bridge.exp_id AND member._id = bridge._id GROUP BY expense._id), (SELECT count(*) FROM member, expense, bridge WHERE expense._id = bridge.exp_id AND member._id = bridge._id GROUP BY expense._id) AS total_member, bridge.bridge_id FROM member, expense, bridge WHERE  (bridge._id = member._id  AND member._id = 2) AND expense._id = bridge.exp_id
`

この助けを願っています。

于 2013-11-26T04:40:24.823 に答える