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 (1 - 8)
hondek
post
Post #2





Grupa: Zarejestrowani
Postów: 355
Pomógł: 50
Dołączył: 20.08.2007
Skąd: Częstochowa

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


Cytat(basu @ 22.08.2007, 14:01:25 ) *
"Dla podanego produktu znajdź produkty najczęściej kupowane przez osoby, które zakupiły podany produkt."


Nic z tego nie rozumiem =P
Go to the top of the page
+Quote Post
nospor
post
Post #3





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Nic z tego nie rozumiem
To jak nic nie rozumiesz (czytaj: nie udzielasz odpowiedzi) to nie nic nie pisz i nie nabijaj postow. Autor wyraźnie napisal ze prosi o wytlumaczenie bo on tez nie rozumie...

@basu to bardzo proste:
Masz znaleźć najczesciej kupowany produkty przez dane osoby. Osobami tymi są osoby, ktory zakupily zadany produkt.
Czyli jesli twoim produktem będzie suszarka, to musisz znaleźć najczesciej kupowane produkty przez osoby, ktory kupily suszarkę.

Zapytania ci nie podam bo prac domowych/zaliczen tu nie rozwiązujemy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
basu
post
Post #4





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

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


to chociaz kawalek zapytania pokrewnego, z ktorego wywnioskuje odpowiedz lub tutorial gdzie cos takiego podobnego jest ? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
mike
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Kawałków prac też nie rozwiązujemy. Pomyślimy za Ciebie raz, drugi i do końca życia będzie ktoś za Ciebie myślał.
Robimy to dla Twojego dobra.

To forum ma na celu pomagać i z chęcią pomożemy.
Ale skoro juz znasz polecenie to przynajmniej spróbuj, bo nawet nie spróbowałeś i żebrzesz o gotowca.
Go to the top of the page
+Quote Post
sylwiq
post
Post #6





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
ramze
post
Post #7





Grupa: Zarejestrowani
Postów: 111
Pomógł: 0
Dołączył: 24.04.2002

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


Korzystając z wątku zapytam.

Co oznacza część kodu z pierwszego posta?
Chodzi mi o to:

Cytat
ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4
Go to the top of the page
+Quote Post
mwojcik
post
Post #8





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 22.07.2007

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


ENGINE=MyISAM - mechanizmem składowania danych
DEFAULT - domyślny
CHARSET=latin1 - typ kodowania znaków w bazie
AUTO_INCREMENT=4 - nastepny dodany rekord bedzie mial wartosc 4 dla klucza głownego dla ktorego zostala ustawiona wlasciwosc auto_increment

Ogolnie - podstawy baz danych (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
ramze
post
Post #9





Grupa: Zarejestrowani
Postów: 111
Pomógł: 0
Dołączył: 24.04.2002

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


Właśnie się uczę (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
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: 3.10.2025 - 17:11