Hirdetés
- Kitolhatja az LGA1700 élettartamát az Intel
- TCL LCD és LED TV-k
- Nyomtató topik
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- Milyen billentyűzetet vegyek?
- Szünetmentes tápegységek (UPS)
- DVB-T, DVB-S (2), DVB-C eszközök
- Kormányok / autós szimulátorok topikja
- AMD Ryzen 9 / 7 / 5 / 3 3***(X) "Zen 2" (AM4)
- Milyen RAM-ot vegyek?
Ú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
- Kitolhatja az LGA1700 élettartamát az Intel
- Poco X8 Pro Max - nem kell ide sem bank, sem akkubank
- TCL LCD és LED TV-k
- Honor Magic6 Pro - kör közepén számok
- Tőzsde és gazdaság
- Motorolaj, hajtóműolaj, hűtőfolyadék, adalékok és szűrők topikja
- Samsung Galaxy Watch8 és Watch8 Classic – lelkes hiperaktivitás
- A nagy Szóda, Szódakészítés topic - legyen egy kis fröccs is! :-)
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- S.T.A.L.K.E.R. 2: Heart of Chornobyl
- További aktív témák...
- Új Redmi Note 15 Pro 5G 256/8GB Blue
- Új Redmi Note 15 5G 128/6GB Black
- RYZEN 5 9600x - XFX RX 9060XT 16GB - 2x16GB DDR5 6000MHz CL32(A-Die) - 1,25TB SSD - NZXT KRAKEN
- Apple iPad Pro 12.9 2nd gen 2017 wifi + cellular 256GB eladó! 0 ciklus! Karcmentes!
- i5-9400F / 16GB DDR4 / RX480 8GB / 240GB SSD + 500GB HDD
- Fujitsu U748 i5-8350 8Gb ram, 256GB SSD win11 számla, garancia
- Apple Watch Ultra 2,Újszerű,Dobozaval,12 hónap garanciával
- HIBÁTLAN iPhone 11 128GB White -1 ÉV GARANCIA - Kártyafüggetlen, MS4258
- Lenovo T14s Gen 2 - 14,1" touch, i5 1145 G7, 16GB RAM, 256-512GB SSD, jó akku, számla, 6 hó gar
- 233 - Lenovo Legion Pro 7 (16IAX10H) - Intel Core U9 275HX, RTX 5080
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Köszi!
