Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: losowe rekordy, ale z podziałem na odgórnie sprecyzowanie pogrupowanie
Forum PHP.pl > Forum > Bazy danych > PostgreSQL
dfs
Witam!

Chyba normalnie wam zaspamuję te forum, ale mam jeszcze jedno konkretne pytanie:

Jak zapytać się o losowy rekord?? Najprostszy przykład (acz nie zawsze wydajny obliczeniowo) to:
  1. SELECT * FROM tabela ORDER BY random() LIMIT 10


Ale co zrobić gdy chcę powiedzmy 10 rekordów, ale takich że 5 spełniają jakiś warunek, zaś 5 inny.
W dodatku ogółem rekordy nie mogą się powtarzać (a są rekordy które spełniają oba te warunki)questionmark.gif
phpion
Zainteresuj się UNION. Wykonaj 2 zapytania (w każdym inne warunki) i połącz je właśnie UNION.
dfs
Cytat(phpion @ 27.09.2010, 08:02:10 ) *
Zainteresuj się UNION. Wykonaj 2 zapytania (w każdym inne warunki) i połącz je właśnie UNION.

No ale nie całkiem o to mi chodzi... Chyba że można te UNION robić jakiś "dynamicznie" wówczas może byłoby to przydane.



powiedzmy mam tabele:

artykul (id, nazwa, tresc);
kategoria (id, nazwa);
przypisanie_kategorii (id_artykul, id_kategoria);
//obie kolumny to klucze obce

grupa_kategorii (id, nazwa);
przypisanie_grup_kategodii(id_grupy_kategorii, id_kategorii));
//obie kolumny to klucze obce

reasumując:
relacja artykul <=> kategoria jest relacją "wielu do wielu"
relacja kategoria <=> grupa_kategorii jest także relacją "wielu do wielu"

zaś moje pytanie dotyczy sytuacji w której mając daną grupe_kategorii chcę wylosować np. 10 artykul'ów, ale takich aby pochodziły w równym stopniu z każdej kategorii do której należy artykul, jak i grupa_kategorii.

Problem jest zawiły gdyż struktura przynależności nie ma on charakteru "drzewa" zaś artykul'y mogą się w pewnym sensie "duplikować" (w najprostszym przypadku: jeden akrykul należy do 2 kategorii które to z kolei wzajemnie należą do jednej grupy_kategorii).


Czy da się rozwiązać ten problem jednym złożonym zapytaniem SELECT exclamation.gifquestionmark.gif Czy też kombinowanie z funkcjami czy czymś podobnym??
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.