Ik wil van een aantal items bijhouden wie het gekocht heeft en wie er allemaal in medelen.
Ik heb daarvoor de volgende tabellen die ik alvast voorzien heb van wat inhoud
Dus Persoon met Naam B heeft in dit voorbeeld dus
Item met id 2 gekocht (zoals blijkt uit tabel items) ter waarde van 10.90 Dit item was eveneens bestemd voor personen A en C zoals blijkt uit Items_Persons. Dus deze delen daarin mee. Hierdoor hebben A en C beiden een schuld van 10.90/3 = 3.63 bij B en staat B (10.90- 3.63)=7.27 in de plus.
Nu wil ik dus proberen om het liefst met 1 select query uit te rekenen wat iemand moet betalen aan anderen. Als je daarvan met de volgende query:
SELECT sum(Price) FROM items WHERE PersonID = persoonid;
het bedrag aftrekt wat iemand zelf uitgegeven hebt kan je z'n saldo uitrekenen.
Hiervoor moet het volgende gebeuren:
Voor ieder itemid waaraan zijn personid gekoppeld is in de tabel items_persons moet er gekeken worden hoeveel andere personen erin meedeelden. De prijs die bij het item hoort delen door dit aantal personen en dit optellen bij zijn totaal.
Er zal dus iets in moeten komen van:
SELECT SUM(Price) FROM items, items_persons WHERE items_persons.PersonID = personid AND items_persons.ItemID = items.itemid;
(Hiermee heb je dus de som van alles waaraan hij meebetaald, maar dat klopt niet)
gecombineerd met:
SELECT COUNT(personid) FROM items_persons WHERE items_persons.PersonID = personid AND ItemID = itemid;
(Hier heb je van een item het aantal mensen wat eraan meebetaald)
Er zit hier dus een overlap in het itemid.
Wie helpt me op weg??
EDIT: eventjes tabellen gerangschikt. EN oh ja, ik wil het met PHP en mysql oplossen, maar echt relevent is dat niet.
Ik heb daarvoor de volgende tabellen die ik alvast voorzien heb van wat inhoud
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| ________________________________________________
#Persons#: PersonID Name
1 A
2 B
3 C
4 D
________________________________________________
#Items#: ItemID PersonID Price
1 1 12.5
2 2 10.90
3 1 0.35
________________________________________________
#Items_Persons# Id ItemID PersonID
0 1 1
1 1 2
2 1 3
3 1 4
4 2 1
5 2 2
6 2 3
7 3 1
8 3 4 |
Dus Persoon met Naam B heeft in dit voorbeeld dus
Item met id 2 gekocht (zoals blijkt uit tabel items) ter waarde van 10.90 Dit item was eveneens bestemd voor personen A en C zoals blijkt uit Items_Persons. Dus deze delen daarin mee. Hierdoor hebben A en C beiden een schuld van 10.90/3 = 3.63 bij B en staat B (10.90- 3.63)=7.27 in de plus.
Nu wil ik dus proberen om het liefst met 1 select query uit te rekenen wat iemand moet betalen aan anderen. Als je daarvan met de volgende query:
SELECT sum(Price) FROM items WHERE PersonID = persoonid;
het bedrag aftrekt wat iemand zelf uitgegeven hebt kan je z'n saldo uitrekenen.
Hiervoor moet het volgende gebeuren:
Voor ieder itemid waaraan zijn personid gekoppeld is in de tabel items_persons moet er gekeken worden hoeveel andere personen erin meedeelden. De prijs die bij het item hoort delen door dit aantal personen en dit optellen bij zijn totaal.
Er zal dus iets in moeten komen van:
SELECT SUM(Price) FROM items, items_persons WHERE items_persons.PersonID = personid AND items_persons.ItemID = items.itemid;
(Hiermee heb je dus de som van alles waaraan hij meebetaald, maar dat klopt niet)
gecombineerd met:
SELECT COUNT(personid) FROM items_persons WHERE items_persons.PersonID = personid AND ItemID = itemid;
(Hier heb je van een item het aantal mensen wat eraan meebetaald)
Er zit hier dus een overlap in het itemid.
Wie helpt me op weg??
EDIT: eventjes tabellen gerangschikt. EN oh ja, ik wil het met PHP en mysql oplossen, maar echt relevent is dat niet.