Ik ben bezig een aantal zaken van Excel naar PHP/MySQL over te hevelen en nu ben ik bij het hoofdstukje serienummers van producten.
Opbouw:
ddddd[A-Z][1-12]
Oftewel 12345A1 bijvoorbeeld, of 54321B12
Het laatste gedeelte zegt wat over het jaar/maand waarin het product gekocht is, het eerste gedeelte is een volgnummer wat na 99999 weer overnieuw begint.
Nu is het zo dat we alleen het begin en het eindnummer opslaan. Dus als we honderd producten gekocht hebben in december, maken we een entry:
Dat maakt het zoeken ietwat lastig, wat stel dat ik CTRL-F doe naar product 00050A12 dan vind ik niets.
Nu zit ik te denken hoe ik dit in SQL moet opslaan.
1) Splitten van volgnummer/datumgedeelte
En dan één of ander script die in de range START_INCR t/m END_INCR kan zoeken. Ik zit dan wel met de index (misschien combo van twee kolommen)
2) Elk nummer apart op laten slaan
wat het zoeken met WHERE wel makkelijk maakt maar dan heb ik na een jaar tienduizenden rijen.
3) Zoals Excel-voorbeeld
Alleen zit ik dan weer met hoe ik kan zoeken naar een los nummer (en welke range erbij hoort).
Veranderen van serienummer is geen optie, het zal altijd cijfers+letter zijn.
Ik kan niet echt wat vinden op Google als ik zoek op 'sql search range string'. Ik zie wel hoe omgekeerd zoeken mogelijk is:
http://stackoverflow.com/...a-range-of-strings-in-sql
Maar ik wil geen range in mijn WHERE clause hebben, maar juist één serienummer waarbij ik een row terug krijg met de range waar hij in zit.
Misschien kijk ik over iets heel simpels heen maar ik zie het niet meer door al dat gebrainstorm
Opbouw:
ddddd[A-Z][1-12]
Oftewel 12345A1 bijvoorbeeld, of 54321B12
Het laatste gedeelte zegt wat over het jaar/maand waarin het product gekocht is, het eerste gedeelte is een volgnummer wat na 99999 weer overnieuw begint.
Nu is het zo dat we alleen het begin en het eindnummer opslaan. Dus als we honderd producten gekocht hebben in december, maken we een entry:
code:
1
2
| START_NR EIND_NR AANTAL PRODUCT 00001A12 00100A12 100 DELL OP1 |
Dat maakt het zoeken ietwat lastig, wat stel dat ik CTRL-F doe naar product 00050A12 dan vind ik niets.
Nu zit ik te denken hoe ik dit in SQL moet opslaan.
1) Splitten van volgnummer/datumgedeelte
code:
1
2
| DATECODE START_INCR END_INCR AMOUNT ITEM A12 00001 00100 100 DELL OP1 |
En dan één of ander script die in de range START_INCR t/m END_INCR kan zoeken. Ik zit dan wel met de index (misschien combo van twee kolommen)
2) Elk nummer apart op laten slaan
code:
1
2
3
| SERIAL ITEM 00001A12 DELL OP1 00002A12 DELL OP1 |
wat het zoeken met WHERE wel makkelijk maakt maar dan heb ik na een jaar tienduizenden rijen.
3) Zoals Excel-voorbeeld
Alleen zit ik dan weer met hoe ik kan zoeken naar een los nummer (en welke range erbij hoort).
Veranderen van serienummer is geen optie, het zal altijd cijfers+letter zijn.
Ik kan niet echt wat vinden op Google als ik zoek op 'sql search range string'. Ik zie wel hoe omgekeerd zoeken mogelijk is:
http://stackoverflow.com/...a-range-of-strings-in-sql
Maar ik wil geen range in mijn WHERE clause hebben, maar juist één serienummer waarbij ik een row terug krijg met de range waar hij in zit.
Misschien kijk ik over iets heel simpels heen maar ik zie het niet meer door al dat gebrainstorm
