Predmet:Loto kombinacile u MySQL-u
Avko je zapoceo temu na
http://icentar.ba/...e=1#p28123
Pa rekoh da vidim kako je moguce naci kombinacije.
Napravio tabelu Brojevi sa jednim poljem Broj, popunio je brojevima od 1 do 45
Prvo probao sa
CREATE VIEW Kombinacije AS
SELECT Broj as t1, Broj as t2, Broj as t3, Broj as t4, Broj as t5, Broj as t6
FROM Brojevi
WHERE t1<t2 AND t2<t3 AND t3<t4 AND t4<t5 AND t5<t6
Ne prolazi ni u Access-u ni u MySQL-u. Zakljucak:
NE KORISTITI ALIASE ZA POLJA U WHERE, HAVING I JOIN KLAUZULI!
Ne znam, mozda u nekom slucaju i moze da prodje, ali u vecini nece
Onda probao
PreuzmiIzvorni kôd (SQL):SELECT t1.broj, t2.broj, t3.broj, t4.broj, t5.broj, t6.broj
FROM brojevi AS t1, brojevi AS t2, brojevi AS t3, brojevi AS t4, brojevi AS t5, brojevi AS t6
WHERE t1.broj<t2.broj AND t2.broj<t3.broj AND t3.broj<t4.broj AND t4.broj<t5.broj AND t5.broj<t6.broj
U Accesu prolazi, dok MySQL ne dozvoljava iste nazive polja, vec sam im morao dati aliase
PreuzmiIzvorni kôd (SQL):SELECT t1.broj AS a, t2.broj AS b, t3.broj AS c, t4.broj AS d, t5.broj AS e, t6.broj AS f
FROM brojevi AS t1, brojevi AS t2, brojevi AS t3, brojevi AS t4, brojevi AS t5, brojevi AS t6
WHERE t1.broj<t2.broj AND t2.broj<t3.broj AND t3.broj<t4.broj AND t4.broj<t5.broj AND t5.broj<t6.broj
Onda sam pozvao
SELECT COUNT(*) FROM Kombinacije
i dobio broj mogucih kombinacija.
Accessu je trebalo oko minut (po slobodnoj proceni), a MySQL-u 8.86 sec iz command line.
Onda rekoh da vidim da li brze radi sa JOIN-ima
PreuzmiIzvorni kôd (SQL):CREATE VIEW `kombinacije2` AS
SELECT t1.broj AS a, t2.broj AS b, t3.broj AS c, t4.broj AS d, t5.broj AS e, t6.broj AS f
FROM ((((brojevi AS t1
INNER JOIN brojevi AS t2 ON t1.broj < t2.broj)
INNER JOIN brojevi AS t3 ON t2.broj < t3.broj)
INNER JOIN brojevi AS t4 ON t3.broj < t4.broj)
INNER JOIN brojevi AS t5 ON t4.broj < t5.broj)
INNER JOIN brojevi AS t6 ON t5.broj < t6.broj;
coun uradio za 8.84 sec, neznatna razlika.
Probao vise puta, uvek je razlika bila na drugoj decimali u korist inner joina
I tako nadjosmo broj mogucih kombinacija. 8 145 060
Za nalazenje broja povoljnih treba izbrisati podatke iz tabele Brojevi i popuniti je brojevima iz opsega koji zelimo da bude izvucen, Na primer samo parni, samo neparni samo koji pocinju sa 1 i sta vam vec padne napamet…
Verovatnocu racunamo kao broj povoljnih/ 8 145 060
Ovaj post je ureden
1
puta. Posljednja izmjena 19.03.2017 19:52 od strane dex.