34 lines
1.1 KiB
Text
34 lines
1.1 KiB
Text
CLOSE DATABASES ALL
|
|
LOCAL lcCollate As String, i As Integer, n As Integer
|
|
lcCollate = SET("Collate")
|
|
SET COLLATE TO "Machine"
|
|
*!* Colours table
|
|
CREATE CURSOR colours (id I UNIQUE, colour V(5))
|
|
INSERT INTO colours VALUES (1, "Red")
|
|
INSERT INTO colours VALUES (2, "White")
|
|
INSERT INTO colours VALUES (3, "Blue")
|
|
*!* Balls table
|
|
CREATE CURSOR balls (colour I, rowid I AUTOINC)
|
|
INDEX ON colour TAG colour
|
|
SET ORDER TO 0
|
|
*!* Make sure there is at least 1 of each colour
|
|
INSERT INTO balls (colour) VALUES(3)
|
|
INSERT INTO balls (colour) VALUES(1)
|
|
INSERT INTO balls (colour) VALUES(2)
|
|
RAND(-1) && Initialise random number generator
|
|
n = 24
|
|
FOR i = 4 TO n
|
|
INSERT INTO balls (colour) VALUES (RanInt())
|
|
ENDFOR
|
|
*!* Show unsorted
|
|
SELECT bb.rowid, cc.colour FROM colours cc JOIN balls bb ON cc.id = bb.colour
|
|
*!* Select by correct order
|
|
SELECT bb.rowid, cc.colour FROM colours cc JOIN balls bb ON cc.id = bb.colour ;
|
|
ORDER BY cc.id INTO CURSOR dutchflag
|
|
*!* Show sorted records
|
|
BROWSE NOMODIFY IN SCREEN
|
|
SET COLLATE TO lcCollate
|
|
|
|
FUNCTION RanInt() As Integer
|
|
RETURN INT(3*RAND()) + 1
|
|
ENDFUNC
|