Hirdetés
- Kormányok / autós szimulátorok topikja
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- Samsung LCD és LED TV-k
- CES 2026: újraértelmezte a billentyűzet fogalmát a HP
- Milyen billentyűzetet vegyek?
- Milyen egeret válasszak?
- Házimozi belépő szinten
- Apple asztali gépek
- DUNE médialejátszók topicja
- A Windows 11 nem akarja ránk erőltetni az AI applikációkat – vagy mégis?
Ú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
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Telekom mobilszolgáltatások
- sziku69: Szólánc.
- Autós topik
- Youtube Android alkalmazás alternatívák reklámszűréssel / videók letöltése
- CURVE - "All your cards in one." Minden bankkártyád egyben.
- Elektromos autók - motorok
- sziku69: Fűzzük össze a szavakat :)
- EAFC 26
- Luck Dragon: Asszociációs játék. :)
- További aktív témák...
- BESZÁMÍTÁS! Apple iPad Air 5 10.9 256GB WiFi tablet extrákkal garanciával hibátlan működéssel
- BESZÁMÍTÁS! Apple Macbook Air 13 2022 M2 8GB 512GB notebook garanciával hibátlan működéssel
- BESZÁMÍTÁS! Lenovo Legion 5 16RX9 Gamer notebook - i7 14650HX 32GB DDR5 1TB SSD RTX 4070 8GB
- Eladó Konfig I5 12400F 16GB DDR4 512GB SSD RX9060XT 8GB!
- Lenovo LOQ alig használt állapotban, garanciával
- 137 - Lenovo Legion Pro 7 (16IRX9H) - Intel Core i9-14900HX, RTX 4080 - 4 ÉV GARANCIA!
- Razer Blade 17" i7-12800H / 32GB / 1TB / RTX 3080 Ti 16GB / 4K 120Hz
- Eladó Samsung Galaxy Tab A7 3/32GB / 12 hónap jótállás / AJÁNDÉK TOK!
- 131 - Lenovo Legion Pro 7 (16IRX9H) - Intel Core i9-14900HX, RTX 4080
- BESZÁMÍTÁS! Apple Macbook Air 13 2022 M2 8GB 512GB notebook garanciával hibátlan működéssel
Állásajánlatok
Cég: Laptopszaki Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Köszi!

