![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 16.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
mam maly problem, a mianowiecie:
mam dwie tabele w bazie danych: produkty: Kod id | photo | catID ------------------- 1 | p1.jpg | 1 2 | p2.jpg | 1 3 | p3.jpg | 2 4 | p4.jpg | 1 kategorie: Kod id | name --------------- 1 | kategoria1 2 | kategoria2 teraz w wyniku zapytania chcialbym otrzymac Kod kategoriaID | photo --------------------- 1 | p1.jpg 2 | p3.jpg gdzie dla id kategorii 1 za kazdym razem zapytanie ma mi zwracac losowe photo z tabeli produkty... mecze sie z tym i mecze... juz nie mam pomyslow jak to zrobic... ![]() pomocy... |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 116 Pomógł: 0 Dołączył: 20.12.2005 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Może:
nie jestem pewien czy jest to do końca poprawne. -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 16.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 69 Pomógł: 0 Dołączył: 22.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
Interesujacy przypadek.
Po namysle sprobowalem takiego zapytania, jednak najbardziej zastanawiajace sa wyniki :
Przy czym zapytanie
zawsze zwraca poprawnie jeden rekord z losowym id. Czyli jak widac zapytanie za kazdym razem zwraca inna wartosc (po kolejnych uruchomianiach wyniki ilosc zwroconych rekordow jest losowa - od 1 do 3) - choc na moje oko to powinno zawsze zwracac 2. Niestety nie wiem czego to jest wina, ale z checia sie dowiem rozwiazania problemu i jak ktos ma jakies uwagi dlaczego tak sie dzieje z zapytaniem powyzszym to z checia poczytam. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 16.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
probowalem to rozwiazac w ten sam sposob co w poscie wyzej i doswiadczylem tych samych problemow :/
I'm confused... ![]() |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 116 Pomógł: 0 Dołączył: 20.12.2005 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
niestety to nie to... ![]() Nie spojrzałem na przykład ![]()
Podane zapytanie dziala poprawnie, czyli po złączeniu tabel kategorii i produktów, dla każdego rekordu z złączonej tabeli wykonuje zapytanie
które zwraca losowe id produktu z danej kategorii, jesli id sie zgadza to ok, jesli nie taki rekord jest usuwany z wyniku. Dlatego w kategoriach w których jest jeden produkt, jest on zawsze wybierany, a jesli produktów jest więcej bywa rożnie ![]() Jest to tzw. zapytanie skolerowane, podzapytanie odwołuje się do pola z zapytania nadrzędnego. Dlaczego to podzapytanie wykonywane jest dla każdego rekordu z tabeli złączonej?, ponieważ przekazujemy do niego categories.id co powoduje ze podzapytanie jest inne dla każdego rekordu z tabeli złączonej. Takie zapytanie powinno się działać
ale jest średnio losowe ponieważ nie są mieszane produkty w danej kategorii,tylko wszystkie razem. Myślę ze lepiej można rozwiązać ten problem procedurką. Ten post edytował wijet 24.08.2007, 20:43:01 -------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 16.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
wielkie dzieki
![]() bedę mógł spać spokojnie ![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 04:29 |