Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> zapytanie do bazy
basu
post
Post #1





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 26.12.2005

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


Witam,
jak rozumiec zapytanie (lub jak je napisac), nie rozumiem go do konca:

"Dla podanego produktu znajdź produkty najczęściej kupowane przez osoby, które zakupiły podany produkt."

SQL do bazy danych:

  1. --
  2. -- Struktura tabeli dla `klienci`
  3. --
  4.  
  5. CREATE TABLE `klienci` (
  6. `IDKlienta` int(11) NOT NULL AUTO_INCREMENT,
  7. `imie` varchar(50) NOT NULL,
  8. `nazwisko` varchar(50) NOT NULL,
  9. `adres` varchar(255) NOT NULL,
  10. `data_urodzenia` date NOT NULL,
  11. PRIMARY KEY (`IDKlienta`)
  12. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
  13.  
  14. --
  15. -- Zrzut danych tabeli `klienci`
  16. --
  17.  
  18. INSERT INTO `klienci` (`IDKlienta`, `imie`, `nazwisko`, `adres`, `data_urodzenia`) VALUES
  19. (1, 'Slawomir', 'Kowalski', 'Filozofa 15', '1983-03-18'),
  20. (2, 'Kornelia', 'Madra', 'Wiatraczna 92', '1983-03-24'),
  21. (3, 'Piotr', 'Wielki', 'Romualda 10', '1982-08-16');
  22.  
  23. -- --------------------------------------------------------
  24.  
  25. --
  26. -- Struktura tabeli dla `produkty`
  27. --
  28.  
  29. CREATE TABLE `produkty` (
  30. `IDProduktu` int(11) NOT NULL AUTO_INCREMENT,
  31. `nazwa` varchar(50) NOT NULL,
  32. `url_zdjecia` varchar(100) DEFAULT NULL,
  33. `opis` varchar(255) DEFAULT NULL,
  34. `cena` float NOT NULL,
  35. `upust` int(11) DEFAULT NULL,
  36. `ilosc` int(11) NOT NULL,
  37. PRIMARY KEY (`IDProduktu`)
  38. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
  39.  
  40. --
  41. -- Zrzut danych tabeli `produkty`
  42. --
  43.  
  44. INSERT INTO `produkty` (`IDProduktu`, `nazwa`, `url_zdjecia`, `opis`, `cena`, `upust`, `ilosc`) VALUES
  45. (1, 'Laptop 12 XCS', 'laptop_12_xcs', 'bla bla bla', 4000, 10, 100),
  46. (2, 'Monitor 19 SONY', 'monitor_19_sony', 'bla bla bla', 1200, 5, 20),
  47. (3, 'Dysk twardy MAXTOR 80 GB', 'maxtor_80', 'bla bla bla', 300, 0, 5),
  48. (4, 'niekupowany nigdy', 'mmm', 'nnnn', 76, 10, 10);
  49.  
  50. -- --------------------------------------------------------
  51.  
  52. --
  53. -- Struktura tabeli dla `transakcje`
  54. --
  55.  
  56. CREATE TABLE `transakcje` (
  57. `IDTransakcji` int(11) NOT NULL AUTO_INCREMENT,
  58. `IDKlienta` int(11) NOT NULL,
  59. `IDProduktu` int(11) NOT NULL,
  60. `status` int(11) NOT NULL,
  61. `data_transakcji` date NOT NULL,
  62. PRIMARY KEY (`IDTransakcji`,`IDKlienta`,`IDProduktu`),
  63. KEY `RefKlienci2` (`IDKlienta`),
  64. KEY `RefProdukty4` (`IDProduktu`)
  65. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
  66.  
  67. --
  68. -- Zrzut danych tabeli `transakcje`
  69. --
  70.  
  71. INSERT INTO `transakcje` (`IDTransakcji`, `IDKlienta`, `IDProduktu`, `status`, `data_transakcji`) VALUES
  72. (1, 1, 2, 1, '2007-08-22'),
  73. (2, 2, 3, 1, '2007-08-22'),
  74. (3, 3, 1, 3, '2007-08-05'),
  75. (4, 2, 3, 1, '2007-08-17'),
  76. (5, 2, 1, 1, '2007-08-07'),
  77. (6, 3, 3, 3, '2007-08-22'),
  78. (7, 1, 2, 2, '2007-08-22'),
  79. (8, 3, 2, 1, '2007-08-22');
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
sylwiq
post
Post #2





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 21.08.2007

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


Tak na dobry poczatek query, ktore odpowie na pytanie:
Znajdz ludkow, ktorzy kupili np.suszarke i pokaz, jaki produkt najczesciej kupowali.
Oczywiscie trzeba je troche przerobic, na pewno zoptymalizowac takze milej zabawy.

  1. SELECT idklienta, idproduktu, count(idproduktu) AS CNT FROM transakcje GROUP BY idklienta, idproduktu
  2.  
  3. HAVING count(idproduktu) IN (
  4.  
  5. SELECT max(CNT) FROM ( SELECT idklienta, idproduktu, count(idproduktu) AS CNT FROM transakcje WHERE idklienta IN (
  6.  
  7. SELECT idklienta FROM transakcje WHERE idproduktu=11111
  8.  
  9. )
  10.  
  11. GROUP BY idklienta, idproduktu
  12.  
  13. )
  14.  
  15. AS MAXCNT GROUP BY idklienta
  16.  
  17. )
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: 28.12.2025 - 11:26