En tvåstegslösningen kanske är att föredra Om det är statiska värden kan man bygga andra delen på en gång. dvs ordn grupperna så att man får träff på rätt ingåmgsvärde.
Hej!
Jag har en tabell med massa nummer med längder från 1 till 5 siffror i fälttypen varchar(5). Jag vill med hjälp av detta kunna hämta ut det nummer som bäst stämmer överens med ett 5-siffrigt variabelvärde.
Om t ex följande nummer finns i databasen:
A) 0
B) 12
C) 123
D) 1234
E) 12345
... och jämförelsevariabeln är t ex 12346 så ska raden D) 1234 hämtas, då den har flest siffror som stämmer överens med variablen, räknat från vänster. Bara rader där alla siffror matchar variablen ska hämtas, därav inte E) som slutar på 5. Om ingen siffra matchar från vänster så ska en rad med 0 hämtas, A).
Det kanske är lite svårt att förstå vad jag menar, men jag radar upp lite scenarion så kanske det klarnar:
Om $v =
91000 -> hämta A)
12900 -> hämta B)
12355 -> hämta C)
12346 -> hämta D)
12345 -> hämta E)
Just nu ser min kod ut så här:
SELECT * FROM t_nummer WHERE k_nummer LIKE '" . $v_nummer . "%' ORDER BY k_nummer ASC LIMIT 0,1
Men kruxet är ju att den då inte hämtar något alls på mina första 4 scenarion ovan.
Om någon orkar ta sig an utmaningen så vore jag enormt tacksam, för jag står still och stampar och vet bara hur jag vill ha det, men har inte en susning om hur jag ska få till det. Om det ens är möjligt med så många "om" ;) Men det borde gå :D
Taxi!

