Misschien een leuk probleem voor de vroege ochtend (of late nacht). Ik ben een bestelsysteem aan het maken. Alle producten hebben een uniek productId. Elk trimester kan er opnieuw besteld worden, er mogen echter geen 2 dezelfde producten per persoon besteld worden (daar gaat dit over). Als een product echter verkocht is, kan hetzelfde product wel weer besteld worden.
Een voorbeeld van aantal bestellingen staat in het plaatje.
Om duplicaten verwijderd te worden heb ik een mooie SQL geschreven. Deze zou alle duplicate bestellingen moeten verwijderen, tenzij een bestelling al verkocht is.
In onderstaande tabel moeten dus, na uitvoering van de SQL, id's 188, 189, 190, 191 en 192 verwijderd worden. Dan zijn alle duplicaten verwijderd, en er wordt rekening gehouden met het feit dat id=98 al verkocht is.
Het probleem: ook id=183 wordt verwijderd. Blijkbaar gaat de detectie van verkochten niet goed, terwijl ik dat toch opgenomen heb (verkocht=false). Ik heb hier al een hele tijd naar lopen kijken, maar ik zie et niet (en googlen heeft ook weinig zin). Iemand die me kan helpen?

Een voorbeeld van aantal bestellingen staat in het plaatje.
Om duplicaten verwijderd te worden heb ik een mooie SQL geschreven. Deze zou alle duplicate bestellingen moeten verwijderen, tenzij een bestelling al verkocht is.
In onderstaande tabel moeten dus, na uitvoering van de SQL, id's 188, 189, 190, 191 en 192 verwijderd worden. Dan zijn alle duplicaten verwijderd, en er wordt rekening gehouden met het feit dat id=98 al verkocht is.
Het probleem: ook id=183 wordt verwijderd. Blijkbaar gaat de detectie van verkochten niet goed, terwijl ik dat toch opgenomen heb (verkocht=false). Ik heb hier al een hele tijd naar lopen kijken, maar ik zie et niet (en googlen heeft ook weinig zin). Iemand die me kan helpen?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| SQL = _
"DELETE FROM TblBestellingen" & _
" WHERE TblBestellingen.Id IN (" & _
"SELECT Duplicaten.Id FROM TblBestellingen AS Duplicaten" & _
" WHERE EXISTS (" & _
"SELECT RelProductId, RelLidId, count(id) FROM TblBestellingen" & _
" WHERE TblBestellingen.RelProductId = Duplicaten.RelProductId" &_
" AND TblBestellingen.RelLidId = Duplicaten.RelLidId" & _
" AND verkocht=false" & _
" GROUP BY TblBestellingen.RelLidId, TblBestellingen.RelProductId" & _
" HAVING COUNT(TblBestellingen.Id)>1" & _
")" & _
")" & _
" AND TblBestellingen.Id NOT IN (" & _
"SELECT Min(id) FROM TblBestellingen AS Duplicaten" & _
" WHERE EXISTS (" & _
"SELECT RelProductId, RelLidId, count(id) FROM TblBestellingen" & _
" WHERE TblBestellingen.RelProductId = Duplicaten.RelProductId" &_
" AND TblBestellingen.RelLidId = Duplicaten.RelLidId" & _
" AND verkocht=false" & _
" GROUP BY TblBestellingen.RelLidId, TblBestellingen.RelProductId" & _
" HAVING COUNT(TblBestellingen.Id)>1" & _
")" & _
" GROUP BY RelProductId, RelLidId" & _
")" & _
"" |
Panacea.NL als je geinteresserd bent in IT en Geneeskunde!