Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zapytanie do bazy
Forum PHP.pl > Forum > Bazy danych
basu
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');
hondek
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
nospor
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 smile.gif
basu
to chociaz kawalek zapytania pokrewnego, z ktorego wywnioskuje odpowiedz lub tutorial gdzie cos takiego podobnego jest ? smile.gif
mike
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.
sylwiq
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. )
ramze
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
mwojcik
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 smile.gif
ramze
Właśnie się uczę smile.gif
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.