Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] Ilosc trafnych liczb
Forum PHP.pl > Forum > Bazy danych > MySQL
mario713
Witam, mam taki kodzik ktory generuje mi 6 liczb i nastepnie te zapytanie przesyla te liczby do tabeli:

  1. $zadanie = "INSERT INTO `lotto_wygenerowane` (`data`, `liczba1`, `liczba2`, `liczba3`, `liczba4`,`liczba5`, `liczba6`, `schowaj`) VALUES ( '".$data."', '".$liczba1."', '".$liczba2."', '".$liczba3."', '".$liczba4."', '".$liczba5."', '".$liczba6."', '0');";
  2. mysql_query($zadanie);


I teraz zaraz po wykonaniu tego zapytania chcialbym aby wyszukalo mi wszystkie kupony ktore trafily jakas liczbe i zapisalo mi w tych kuponach ilosc traionych liczb w polu ilosctrafien.

Moje tabele wygladaja tak:

tatbela lotto_kupony
struktura id | data | liczba1 | liczba2 | liczba3 | liczba4 | liczba5 | liczba6 | koszt | wygrana | oplacony | wazny | imie | nazwisko | ilosctrafien
przeglad 1 | 22.07.2009 | 33 | 32 | 1 | 16 | 49 | 44 | 20 | 0 | 0 | 0 | Mike | Peterson | NULL

tabela lotto_wygenerowane
struktura id | data | liczba1 | liczba2 | liczba3 | liczba4 | liczba5 | liczba6 | schowaj
przeglad 3 | 8.07.2009 | 34 | 43 | 23 | 42 | 55 | 32 | 0

I wlasnie nie wiem jak sie do tego zabrac...

Ps. Za pomoc pomogl gwarantowane smile.gif
Fifi209
Dodaj warunek do selecta dla każdej liczby

where `liczba(numer)` in(wylosowane) and `liczba(numer)` in (wylosowane)

(numer) -> numer liczby
(wylosowane) -> zbiór wylosowanych liczb, oddzielonych przecinkami
I analogicznie dla wszystkich liczb tak samo.
mario713
ok, biore sie do roboty i jezeli sie uda masz pomogl smile.gif

@EDIT
a jeszcze mogl bys podac maly przykladzik ?
Nie wiem czy do konca dobrze robie ale zrobilem narazie cos takiego:
  1. $zapytanko = "UPDATE lotto_kupony SET `ilosctrafien` = '2' WHERE `liczba1` in (lotto_wygenerowane) and `liczba2` in (lotto_wygenerowane)";

i zeby sprawdzalo te liczby tylko z ta linijka w lotto_wygenerowane ktora ma pole schowaj rowne 0 to gdzie dodac warunek ? tongue.gif
@EDIT2
ok zalapalem haha.gif troche zle ten kodzik zrobilem ^^
qrde ale nadal opornie idzie, moglbys dac przyklad jakis ? tongue.gif
Fifi209
Cytat(mario713 @ 22.07.2009, 14:02:39 ) *
ok, biore sie do roboty i jezeli sie uda masz pomogl smile.gif

@EDIT
a jeszcze mogl bys podac maly przykladzik ?
Nie wiem czy do konca dobrze robie ale zrobilem narazie cos takiego:
  1. $zapytanko = "UPDATE lotto_kupony SET `ilosctrafien` = '2' WHERE `liczba1` in (lotto_wygenerowane) and `liczba2` in (lotto_wygenerowane)";

i zeby sprawdzalo te liczby tylko z ta linijka w lotto_wygenerowane ktora ma pole schowaj rowne 0 to gdzie dodac warunek ? tongue.gif
@EDIT2
ok zalapalem haha.gif troche zle ten kodzik zrobilem ^^
qrde ale nadal opornie idzie, moglbys dac przyklad jakis ? tongue.gif


Sorki mój błąd, nie pomyślałem/doczytałem że ilość trafień potrzebujesz. To zupełnie zmienia postać rzeczy.
To już bardziej złożony problem, na który póki co nie umiem wymyślić sensownej odpowiedzi.
kefirek
Jak zrobić w to w zapytaniu nie mam pomysłu ale w php wyglądało by to tak i potem zmienną $ilosctrafien wstawiasz do bazy
  1. <?php
  2. $lotto_kupony = array(33,32,1,16,49,44,20);
  3. $lotto_wygenerowane = array(34,43,23,42,55,32);
  4. $ilosctrafien=0;
  5. foreach($lotto_kupony AS $wynik){
  6. if (in_array($wynik, $lotto_wygenerowane)) { $ilosctrafien++; }
  7. }
  8. echo $ilosctrafien;
  9. ?>
mario713
qrde tylko nie wpada mi do glowy jak tego uzyc aby masowo sprawdzilo ilosc tych trafnych za 1 razem sciana.gif
kitol
Masz źle zaprojektowane tabele. Błędem jes tworzenie sześciu kolumn (liczba1, liczba2...)
Zastanów sie nad wywaleniem tych kolumn i dodaniem jednej id_losowania która będzie kluczem do nowej tabeli zawierajacej dwie kolumny: id_losowania, wylosowana liczba.
Takie modyfikacje wprowadź w obu dotychczasowych tabelach.

Dla kazdego losowania masz co prawda 6 wierszy w takiej tabeli, ale porównywanie wyników jest wtedy dużo łatwiejsze. Odpowiedni JOIN i GROUP BY z COUNTem powinny rozwiązać problem.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.