Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> lotto, sprawdzanie kuponów i wyszukiwanie liczb
Fixer
post
Post #1





Grupa: Zarejestrowani
Postów: 123
Pomógł: 0
Dołączył: 24.10.2004
Skąd: TG

Ostrzeżenie: (0%)
-----


mam w bazie archiwalne wyniki totka zapisane w ten sposób:

  1. +----------+----------------+----+----+----+----+----+----+
  2. | id_wpisu | data_losowania | 1  | 2  | 3  | 4  | 5  | 6  |
  3. +----------+----------------+----+----+----+----+----+----+
  4. |        1 | 1957-01-27     |  8 | 12 | 31 | 39 | 43 | 45 |
  5. |        6 | 1957-03-03     | 24 | 26 | 31 | 35 | 43 | 47 |
  6. +----------+----------------+----+----+----+----+----+----+


Jak przeszukiwać bazę by znaleść wszystkie 3-ki, 4-ki, 5-tki skreślonych przezemnie wybranych 6 liczb??

kombinuje z takim czymś (ale niestety nie otrzymuję prawdziwych wyników):
  1. SELECT COUNT(id_wpisu)
  2. FROM `bazki`.`lotto_duzy_lotek` WHERE (
  3. `1` = '$par_a' OR `2` = '$par_a' OR `3` = '$par_a' OR `4` = '$par_a' OR `5` = '$par_a' OR `6` = '$par_a'
  4. ) AND (
  5. `1` = '$par_b' OR `2` = '$par_b' OR `3` = '$par_b' OR `4` = '$par_b' OR `5` = '$par_b' OR `6` = '$par_b'
  6. ) AND (
  7. `1` = '$par_c' OR `2` = '$par_c' OR `3` = '$par_c' OR `4` = '$par_c' OR `5` = '$par_c' OR `6` = '$par_c'
  8. ) AND (
  9. `1` = '$par_d' OR `2` = '$par_d' OR `3` = '$par_d' OR `4` = '$par_d' OR `5` = '$par_d' OR `6` = '$par_d'
  10. );


gdzie par_a do par_f to skreślone 6 liczb

Znacie jakis lepszy sposób na tego typu przeszukiwania?

Ten post edytował Fixer 6.03.2009, 01:47:59
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
blooregard
post
Post #2


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Mozna nieco skrócić to zapytanie z zastosowaniem WHERE ... IN zamiast LIKE
  1. WHERE 1 IN (par_a,par_b,par_c,par_d,par_e,par_f) OR 2 IN (par_a,par_b,par_c,par_d,par_e,par_f) OR ... itd
Go to the top of the page
+Quote Post
zegarek84
post
Post #3





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


Blooregard MA RACJĘ, pozatym wygodniej będziesz miał jeśli zrobisz małe obliczenie na warunkach (true jako jeden itd.) i potem sprawdzisz pod WHERE czyli np tak:
  1. SELECT * , (('lotto'.'1' IN (1,3,5,6,7,8)) + ('lotto'.'2' IN (1,3,5,6,7,8)) + ('lotto'.'3' IN (1,3,5,6,7,8)) + ('lotto'.'4' IN (1,3,5,6,7,8)) + ('lotto'.'5' IN (1,3,5,6,7,8)) + ('lotto'.'6' IN (1,3,5,6,7,8))) AS ile FROM 'lotto' WHERE ile>=3 ORDER BY ile DESC

zamiast tych cyfererek podstaw sobie swoje wartości zmiennych/wylosowanych cyfr...

Ten post edytował zegarek84 6.03.2009, 12:27:24
Go to the top of the page
+Quote Post
shine
post
Post #4





Grupa: Zarejestrowani
Postów: 78
Pomógł: 5
Dołączył: 15.04.2006

Ostrzeżenie: (10%)
X----


to co podal zegarek84 powinnobyc bardziej wydajne ze wzgledu na to ze "OR" bardzo spowalnia zapytanie
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 2.10.2025 - 17:51