- Apple Watch
- OnePlus 15 - van plusz energia
- Samsung Galaxy A25 5G - az út középen járható
- Google Pixel topik
- Xiaomi 15T Pro - a téma nincs lezárva
- Samsung Galaxy Z Fold7 - ezt vártuk, de…
- Milyen okostelefont vegyek?
- Samsung Galaxy S23 Ultra - non plus ultra
- Qualcomm lapkával és nagyobb teleppel várható a CMF Phone 3 Pro
- Honor Magic8 Pro - bevált recept kölcsönvett hozzávalókkal
Ú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 Felhasználók OFF topicja
- Milyen monitort vegyek?
- Tőzsde és gazdaság
- exHWSW - Értünk mindenhez IS
- Kuponkunyeráló
- Azonnali fáradt gőzös kérdések órája
- Apple Watch
- Kormányok / autós szimulátorok topikja
- One otthoni szolgáltatások (TV, internet, telefon)
- Luck Dragon: Asszociációs játék. :)
- További aktív témák...
- Ps4 Slim 500GB Alza jótállás+ MM garis Nacon kontroller
- -75% Dell XPS 13 (9320) i7-1260P 16GB Ram/1TB SSD FHD+ Gari
- Dobozos Új Dell Xps 15 9530 i7 13620h 16gb ram 1tb ssd intel uhd graphics+ Intel Arc A370M
- -68%OFF HP Spectre x360 14 (14-ef2276ng) i7-1355U/16GB/1TBSSD/3K 3000X2000 Amoled
- GIGA AKCIÓ!!! MacBook Air M4 24GB 512GB Garancia! SILVER
- Apple iPad Air 5th 64GB 100% (1év Garancia)
- Apple iPhone 15 Pro 256GB Új akku 12hó jótállás!
- Beszámítás!Nothing Phone (3) 5G 512GB okostelefon garanciával hibátlan működéssel
- HP ProBook 445 G9 14" Ryzen 3 5425U, 8-16GB RAM, SSD, jó akku, számla, 6 hó gar
- GYÖNYÖRŰ iPhone 13 Mini 256GB Midnight -1 ÉV GARANCIA - Kártyafüggetlen, MS4647, 100% Akkumulátor
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Köszi!
