Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]warunek
topik53
post
Post #1





Grupa: Zarejestrowani
Postów: 107
Pomógł: 1
Dołączył: 3.06.2010

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


Witam.
W bazie danych mam dwie tabele
1.Wyniki
2.Podane
w skrypcie php wysyłam liczby do tabeli podane.
W następnym sprawdzam czy wyniki=podane.
i tu zaczynają sie schody ponieważ zrobiłem system punktów, np jezeli podam 6 i bedą sie pokrywac ze soba dostane 6 pkt. i tak dalej.
ale przy 5,4,3,2 prawydłowych wynikach(przy sprawdzaniu ich) mam problem poniewarz w zapytaniu Sql mysze podać warunek (WHERE)
lecz przy 5 poprawnych jest wiele możliwosci .bo jezeli wylosuje 1 2 3 4 5 6 ... a podam 3 4 2 1 5 to taki:
  1. WHERE
  2. ((user.liczba1=wyniki.l1) AND (user.liczba2=wyniki.l2) AND (user.liczba3=wyniki.l3) AND (user.liczba4=wyniki.l4) AND (user.liczba5=wyniki.l5) AND (user.liczba6<>wyniki.l6) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki)
  3. OR
  4. (user.liczba1=wyniki.l2) AND (user.liczba2=wyniki.l3) AND ( user.liczba3=wyniki.l4) AND (user.liczba4=wyniki.l5) AND (user.liczba5=wyniki.l6) AND (user.liczba6<>wyniki.l1) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki)
  5. OR
  6. (user.liczba1=wyniki.l3) AND (user.liczba2=wyniki.l4) AND ( user.liczba3=wyniki.l5) AND (user.liczba4=wyniki.l6) AND (user.liczba5=wyniki.l1) AND (user.liczba6<>wyniki.l2) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki)
  7. OR
  8. (user.liczba1=wyniki.l4) AND (user.liczba2=wyniki.l5) AND ( user.liczba3=wyniki.l6) AND (user.liczba4=wyniki.l1) AND (user.liczba5=wyniki.l2) AND (user.liczba6<>wyniki.l3) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki)
  9. OR
  10. (user.liczba1=wyniki.l5) AND (user.liczba2=wyniki.l6) AND ( user.liczba3=wyniki.l1) AND (user.liczba4=wyniki.l2) AND (user.liczba5=wyniki.l3) AND (user.liczba6<>wyniki.l4) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki)
  11. OR
  12. (user.liczba1=wyniki.l6) AND (user.liczba2=wyniki.l1) AND ( user.liczba3=wyniki.l2) AND (user.liczba4=wyniki.l3) AND (user.liczba5=wyniki.l4) AND (user.liczba6<>wyniki.l5) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki))
  13.  
  14. OR
  15.  
  16. ((user.liczba1=wyniki.l1) AND (user.liczba2=wyniki.l2) AND (user.liczba3=wyniki.l3) AND (user.liczba4=wyniki.l4) AND (user.liczba5<>wyniki.l5) AND (user.liczba6=wyniki.l6) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki)
  17. OR
  18. (user.liczba1=wyniki.l2) AND (user.liczba2=wyniki.l3) AND ( user.liczba3=wyniki.l4) AND (user.liczba4=wyniki.l5) AND (user.liczba5<>wyniki.l6) AND (user.liczba6=wyniki.l1) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki)
  19. OR
  20. (user.liczba1=wyniki.l3) AND (user.liczba2=wyniki.l4) AND ( user.liczba3=wyniki.l5) AND (user.liczba4=wyniki.l6) AND (user.liczba5<>wyniki.l1) AND (user.liczba6=wyniki.l2) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki)
  21. OR
  22. (user.liczba1=wyniki.l4) AND (user.liczba2=wyniki.l5) AND ( user.liczba3=wyniki.l6) AND (user.liczba4=wyniki.l1) AND (user.liczba5<>wyniki.l2) AND (user.liczba6=wyniki.l3) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki)
  23. OR
  24. (user.liczba1=wyniki.l5) AND (user.liczba2=wyniki.l6) AND ( user.liczba3=wyniki.l1) AND (user.liczba4=wyniki.l2) AND (user.liczba5<>wyniki.l3) AND (user.liczba6=wyniki.l4) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki)
  25. OR
  26. (user.liczba1=wyniki.l6) AND (user.liczba2=wyniki.l1) AND ( user.liczba3=wyniki.l2) AND (user.liczba4=wyniki.l3) AND (user.liczba5<>wyniki.l4) AND (user.liczba6=wyniki.l5) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki))
  27.  
  28. OR
  29.  
  30. ((user.liczba1=wyniki.l1) AND (user.liczba2=wyniki.l2) AND (user.liczba3=wyniki.l3) AND (user.liczba4<>wyniki.l4) AND (user.liczba5=wyniki.l5) AND (user.liczba6=wyniki.l6) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki)
  31. OR
  32. (user.liczba1=wyniki.l2) AND (user.liczba2=wyniki.l3) AND ( user.liczba3=wyniki.l4) AND (user.liczba4<>wyniki.l5) AND (user.liczba5=wyniki.l6) AND (user.liczba6=wyniki.l1) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki)
  33. OR
  34. (user.liczba1=wyniki.l3) AND (user.liczba2=wyniki.l4) AND ( user.liczba3=wyniki.l5) AND (user.liczba4<>wyniki.l6) AND (user.liczba5=wyniki.l1) AND (user.liczba6=wyniki.l2) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki)
  35. OR
  36. (user.liczba1=wyniki.l4) AND (user.liczba2=wyniki.l5) AND ( user.liczba3=wyniki.l6) AND (user.liczba4<>wyniki.l1) AND (user.liczba5=wyniki.l2) AND (user.liczba6=wyniki.l3) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki)
  37. OR
  38. (user.liczba1=wyniki.l5) AND (user.liczba2=wyniki.l6) AND ( user.liczba3=wyniki.l1) AND (user.liczba4<>wyniki.l2) AND (user.liczba5=wyniki.l3) AND (user.liczba6=wyniki.l4) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki)
  39. OR
  40. (user.liczba1=wyniki.l6) AND (user.liczba2=wyniki.l1) AND ( user.liczba3=wyniki.l2) AND (user.liczba4<>wyniki.l3) AND (user.liczba5=wyniki.l4) AND (user.liczba6=wyniki.l5) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki))
  41.  
  42. OR
  43.  
  44. ((user.liczba1=wyniki.l1) AND (user.liczba2=wyniki.l2) AND (user.liczba3<>wyniki.l3) AND (user.liczba4=wyniki.l4) AND (user.liczba5=wyniki.l5) AND (user.liczba6=wyniki.l6) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki)
  45. OR
  46. (user.liczba1=wyniki.l2) AND (user.liczba2=wyniki.l3) AND ( user.liczba3<>wyniki.l4) AND (user.liczba4=wyniki.l5) AND (user.liczba5=wyniki.l6) AND (user.liczba6=wyniki.l1) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki)
  47. OR
  48. (user.liczba1=wyniki.l3) AND (user.liczba2=wyniki.l4) AND ( user.liczba3<>wyniki.l5) AND (user.liczba4=wyniki.l6) AND (user.liczba5=wyniki.l1) AND (user.liczba6=wyniki.l2) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki)
  49. OR
  50. (user.liczba1=wyniki.l4) AND (user.liczba2=wyniki.l5) AND ( user.liczba3<>wyniki.l6) AND (user.liczba4=wyniki.l1) AND (user.liczba5=wyniki.l2) AND (user.liczba6=wyniki.l3) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki)
  51. OR
  52. (user.liczba1=wyniki.l5) AND (user.liczba2=wyniki.l6) AND ( user.liczba3<>wyniki.l1) AND (user.liczba4=wyniki.l2) AND (user.liczba5=wyniki.l3) AND (user.liczba6=wyniki.l4) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki)
  53. OR
  54. (user.liczba1=wyniki.l6) AND (user.liczba2=wyniki.l1) AND ( user.liczba3<>wyniki.l2) AND (user.liczba4=wyniki.l3) AND (user.liczba5=wyniki.l4) AND (user.liczba6=wyniki.l5) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki))
  55.  
  56. OR
  57.  
  58. ((user.liczba1=wyniki.l1) AND (user.liczba2<>wyniki.l2) AND (user.liczba3=wyniki.l3) AND (user.liczba4=wyniki.l4) AND (user.liczba5=wyniki.l5) AND (user.liczba6=wyniki.l6) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki)
  59. OR
  60. (user.liczba1=wyniki.l2) AND (user.liczba2<>wyniki.l3) AND ( user.liczba3=wyniki.l4) AND (user.liczba4=wyniki.l5) AND (user.liczba5=wyniki.l6) AND (user.liczba6=wyniki.l1) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki)
  61. OR
  62. (user.liczba1=wyniki.l3) AND (user.liczba2<>wyniki.l4) AND ( user.liczba3=wyniki.l5) AND (user.liczba4=wyniki.l6) AND (user.liczba5=wyniki.l1) AND (user.liczba6=wyniki.l2) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki)
  63. OR
  64. (user.liczba1=wyniki.l4) AND (user.liczba2<>wyniki.l5) AND ( user.liczba3=wyniki.l6) AND (user.liczba4=wyniki.l1) AND (user.liczba5=wyniki.l2) AND (user.liczba6=wyniki.l3) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki)
  65. OR
  66. (user.liczba1=wyniki.l5) AND (user.liczba2<>wyniki.l6) AND ( user.liczba3=wyniki.l1) AND (user.liczba4=wyniki.l2) AND (user.liczba5=wyniki.l3) AND (user.liczba6=wyniki.l4) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki)
  67. OR
  68. (user.liczba1=wyniki.l6) AND (user.liczba2<>wyniki.l1) AND ( user.liczba3=wyniki.l2) AND (user.liczba4=wyniki.l3) AND (user.liczba5=wyniki.l4) AND (user.liczba6=wyniki.l5) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki))
  69.  
  70. OR
  71.  
  72. ((user.liczba1<>wyniki.l1) AND (user.liczba2=wyniki.l2) AND (user.liczba3=wyniki.l3) AND (user.liczba4=wyniki.l4) AND (user.liczba5=wyniki.l5) AND (user.liczba6=wyniki.l6) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki)
  73. OR
  74. (user.liczba1<>wyniki.l2) AND (user.liczba2=wyniki.l3) AND ( user.liczba3=wyniki.l4) AND (user.liczba4=wyniki.l5) AND (user.liczba5=wyniki.l6) AND (user.liczba6=wyniki.l1) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki)
  75. OR
  76. (user.liczba1<>wyniki.l3) AND (user.liczba2=wyniki.l4) AND ( user.liczba3=wyniki.l5) AND (user.liczba4=wyniki.l6) AND (user.liczba5=wyniki.l1) AND (user.liczba6=wyniki.l2) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki)
  77. OR
  78. (user.liczba1<>wyniki.l4) AND (user.liczba2=wyniki.l5) AND ( user.liczba3=wyniki.l6) AND (user.liczba4=wyniki.l1) AND (user.liczba5=wyniki.l2) AND (user.liczba6=wyniki.l3) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki)
  79. OR
  80. (user.liczba1<>wyniki.l5) AND (user.liczba2=wyniki.l6) AND ( user.liczba3=wyniki.l1) AND (user.liczba4=wyniki.l2) AND (user.liczba5=wyniki.l3) AND (user.liczba6=wyniki.l4) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki)
  81. OR
  82. (user.liczba1<>wyniki.l6) AND (user.liczba2=wyniki.l1) AND ( user.liczba3=wyniki.l2) AND (user.liczba4=wyniki.l3) AND (user.liczba5=wyniki.l4) AND (user.liczba6=wyniki.l5) AND wyniki.id = (SELECT max(wyniki.id) FROM wyniki))
warunek nie wystarcza.. co moge zrobic?

Bring
Up
My
Post
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Wicepsik
post
Post #2





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

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


Źle masz zaprojektowaną bazę danych

CODE
--
-- Baza danych: `webserv`
--

-- --------------------------------------------------------

--
-- Struktura tabeli dla `losowanie`
--

CREATE TABLE `losowanie` (
`id_user` int(11) NOT NULL,
`liczba` int(2) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin2;

--
-- Zrzut danych tabeli `losowanie`
--

INSERT INTO `losowanie` (`id_user`, `liczba`) VALUES
(1, 6),
(1, 44),
(1, 3),
(1, 5),
(1, 34),
(1, 28),
(2, 30),
(2, 10),
(2, 43),
(2, 49),
(2, 19),
(2, 44),
(3, 28),
(3, 14),
(3, 7),
(3, 19),
(3, 48),
(3, 31),
(4, 21),
(4, 18),
(4, 24),
(4, 14),
(4, 34),
(4, 7),
(5, 38),
(5, 29),
(5, 22),
(5, 40),
(5, 5),
(5, 19),
(6, 31),
(6, 46),
(6, 7),
(6, 49),
(6, 35),
(6, 32),
(7, 6),
(7, 15),
(7, 33),
(7, 25),
(7, 39),
(7, 31),
(8, 47),
(8, 31),
(8, 17),
(8, 40),
(8, 28),
(8, 30),
(9, 25),
(9, 11),
(9, 47),
(9, 26),
(9, 24),
(9, 33);

-- --------------------------------------------------------

--
-- Struktura tabeli dla `users`
--

CREATE TABLE `users` (
`id` int(11) NOT NULL auto_increment,
`user` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=21 ;

--
-- Zrzut danych tabeli `users`
--

INSERT INTO `users` (`id`, `user`) VALUES
(1, 'Osoba0'),
(2, 'Osoba1'),
(3, 'Osoba2'),
(4, 'Osoba3'),
(5, 'Osoba4'),
(6, 'Osoba5'),
(7, 'Osoba6'),
(8, 'Osoba7'),
(9, 'Osoba8'),
(10, 'Osoba9');


  1. $b=array();
  2. while(count($b)<6){
  3. $s = rand(1,49);
  4. if(!in_array($s,$b)){
  5. $b[] = $s;
  6. }
  7. }
  8. echo 'Wylosowane liczby: <br/>'.implode(',', $b).'<br/>';
  9.  
  10. mysql_connect('localhost','root','');
  11. mysql_selectdb('webserv');
  12.  
  13. $result = mysql_query('SELECT COUNT(liczba) AS idu, u.user AS us, GROUP_CONCAT(liczba ORDER BY liczba) AS licz FROM users u, losowanie l WHERE u.id = l.id_user AND l.liczba in ('.implode(',',$b).') GROUP BY u.user HAVING idu > 1');
  14. while($row=mysql_fetch_assoc($result)){
  15. echo $row['us'].' = '.$row['idu'].' = '.$row['licz'].'<br>';
  16. }


Może to nie jest najoptymalniejsze rozwiązanie, ale z pewnością lepsze niż twoje (IMG:style_emoticons/default/smile.gif)
Przestudiuj dokładnie to co napisałem.
Go to the top of the page
+Quote Post

Posty w temacie


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: 24.12.2025 - 18:48