Hämta ledigt nummer
Hej!
Finns det någon som är haj på det här med SQL som kan hjälpa mig?
Jag ska hämta närmast lediga nummer som är större än det värde jag valt
Har prövat med:
<code>
SELECT MIN(Artnr)+1 AS NYTTNR FROM ARTIKELREGISTER AR WHERE(Artnr >= " & valnr & " ) AND ( NOT EXISTS( SELECT 1 FROM ARTIKELREGISTER WHERE Artnr = AR.Artnr + 1))
</code>
men utan framgång. Om jag har ett antal poster t.ex 1,10000,10001,10002 så får jag 10003 som resultat om jag väljer 1 som lägsta nummer i stället för 2 som är det närmasre lediga nummer över 1
Svara
Sv: Hämta ledigt nummer
Din fråga ger 2 hoss mig med de poster du angav. MEn jag skulle utfört det med en join. Vilket är mer effektivt än en subquery.
<code>
strSQL = "SELECT MIN(Main.Artnr) + 1 AS NYTTNR" & vbCrLf & _
"FROM ARTIKELREGISTER Main LEFT JOIN" & vbCrLf & _
" ARTIKELREGISTER Sub ON Main.Artnr + 1 = Sub.Artnr" & vbCrLf & _
"WHERE (Main.Artnr >= " & valnr & ") AND (Sub.Artnr Is Null)"
</code>
Man bör inte fylla i tomma nummer. Utan fortsätta på serien. Varför vill du fylla tomma nummer?
Svara
Sv: Hämta ledigt nummer
Varför är du intresserad av det? Känns som om att det kommer att gå mer prestanda
till att söka ett ledigt nummer än att utföra de kritiska operationerna...
Enklast är att använda en automatisk räknare och bara fortsätta på den. Om en post
tas bort, bör man nästan ha spårbarheten så att den ligger kvar men är inaktiv.
/Emma
Svara
Sv: Hämta ledigt nummer
Tack för hjälpen det fungerade utmärkt...... jag får kanske gå en kurs i SQL och lära mig mer om det.
Varför jag inte använder en nummerserie!!!!
Tabellen är för uthyrning och försäljning av filmer. Vanliga videoband vill de ha med ett artikelnummer som ligger från 10000 och uppåt och DVD från 1 och uppåt. En ny artikel kan få samma nummer som en tidigare som har utgått och blivit borttagen. Därför kan jag inte använda en nummerserie vilket klart kunde ha varit bättre, men nu är det som det är.
//Krister
Svara