Hirdetés
- Luck Dragon: Asszociációs játék. :)
- balojazz: Szódakészítés üzembiztosan és olcsón! Figyelem, csak hardcore szódázóknak!
- gban: Meghalt Chuck Norris
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Luck Dragon: Alza kuponok – aktuális kedvezmények, tippek és tapasztalatok (külön igényre)
- sziku69: Szólánc.
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: MárkaLánc
- Parci: Milyen mosógépet vegyek?
- aquark: Zsebszámológépek
Új hozzászólás Aktív témák
-
Apollo17hu
őstag
Sziasztok!
Van egy problémám, amire csak favágó megoldásom van, de érdekelne, hogy megoldható-e elegáns(abb)an.
Van egy tény tábla (t1), ami tartalmaz egy egyedi azonosítót (id), és további attribútum mezőket (m1, m2, m3 stb.).
Van egy dimenzió tábla (t2), ami a tény tábla rekordjainak besorolására szolgál. Ebben a dimenzió táblában megvan az összes attribútum mező (m1, m2, m3 stb.), ami t1-ben is szerepel, de itt id helyett egy ún. kategoria mező van. A kategoria mező szintén egyedi. Úgy áll elő, hogy a rekordon lévő attribútum mezőket egyszerűen konkatenáljuk.A feladat az, hogy t1 összes sorát meg kell nézni, hova kategorizálódik t2 szerint. A probléma ott kezdődik, hogy az attribútum mezők mindkét táblában hol töltöttek, hol nem (NULL). Értelemszerűen, ha t2-ben töltetlen egy attribútum, akkor az a kategorizálás szempontjából irreleváns (vagyis t1-ben bármit tartalmaz az attribútum, a rekord kötni fog t2-vel). ...és ott folytatódik, hogyha t2-ben bizonyos sorok "tartalmazzák" a másikat, akkor a szűkebb halmaz priorizált.
Például, ha az alábbi két rekord szerepel t2-ben:
m1 = NULL; m2 = 'Bela'; kategoria = Bela
m1 = 'Aladar'; m2 = 'Bela'; kategoria = AladarBela...akkor t1-ben az alábbi rekord:
id = 1; m1 = 'Aladar'; m2 = 'Bela'
az 'AladarBela' kategóriát fogja megkapni, mert ugyan 'Bela' kategória is érvényes lenne rá, de 'AladarBela' szűkebb halmazt képvisel (mert nem mindegy, mi kerül az m1 attribútumba).
Ha t1-ben ez a rekord lenne:
id = 2; m1 = 'Alfonz'; m2 = 'Bela'
...akkor a 'Bela' kategóriát kapná.
Látszik, hogy a kategorizálás egyértelmű, de nekem nem jut eszembe egyszerűbb megoldás annál, minthogy létrehozzak egy olyan CASE WHEN-t, aminek az ágainak számossága egyezik a t2 táblában lévő rekordok számosságával. És ez azért is gáz így, mert ha t2 bővül/módosul, akkor a CASE WHEN-t is bővíteni/módosítani kell.
DB Fiddle-ben készítettem két mintatáblát, ha vkit érdekel a problémafelvetés.
Köszi!
Új hozzászólás Aktív témák
- Építő/felújító topik
- Honor Magic7 Pro - kifinomult, költséges képalkotás
- MacBook Neo vs MacBook Air – Megéri a félár?
- Robot fűnyírók
- WLAN, WiFi, vezeték nélküli hálózat
- Közös alapokra helyezte az FSR-t és a PSSR-t az AMD és a Sony
- Óra topik
- Linux kezdőknek
- Kormányok / autós szimulátorok topikja
- Nvidia GPU-k jövője - amit tudni vélünk
- További aktív témák...
- ELADÓ KOMOLY KONFIG nem sürgős, nem alkudozós játszótér
- Gamer pc + aoc gamer monitor 144hz 32" ívelt.
- GAMER PC // ASUS TUF B650M-PLUS / R9 7900X / 64GB DDR5 / SAPPHIRE Radeon RX 7800 XT / 1TB M.2 SSD
- Intel Core i7-13700KF + ASUS Prime Z790-P WIFI + Kingston FURY Beast 32GB DDR5 6000MHz
- OH! Dell Latitude 7340 Üzleti Profi Fémházas Ultrabook Laptop 13,3" -65% i7-1365U 16/512 FHD IRIS Xe
- Akciós Windows 10 pro + Office 2019 professional plus csomag AZONNALI SZÁLLÍTÁS
- Xiaomi 11 Lite / 6/128GB / Kártyafüggetlen / 12Hó Garancia
- BESZÁMÍTÁS! Microsoft XBOX Series X 1TB SSD fekete játékkonzol extra kontrollerrel garanciával
- Kezdő Gamer PC-Számítógép! I5 6500 / GTX 1050Ti / 8GB DDR4 / 240GB SSD
- Katonai Rugged laptopok Panasonic Toughbook 5-6. gen gar.
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Köszi!