Hirdetés
- Samsung Galaxy A56 - megbízható középszerűség
- Milyen okostelefont vegyek?
- OnePlus 15 - van plusz energia
- Xiaomi 14T Pro - teljes a család?
- Samsung Galaxy S25 Edge - a tegnap határán
- iPhone topik
- Ezek a OnePlus 12 és 12R európai árai
- Vivo X200 Pro - a kétszázát!
- Telekom mobilszolgáltatások
- Samsung Galaxy Watch4 és Watch4 Classic - próbawearzió
Ú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
- ELADÓ GAMER EGYEDI KONFIG
- EIZO FlexScan EV2495 Made in Japan! 1920x1200 IPS USB-c állítható magasság, PIVOT 2024-04 gyártás!
- 10 DB Lenovo ThinkPad Laptop X13 G2 G3, T14 G3 G5, T14s G4 G6, P15 G1 G2
- RAM memória Crucial Pro OC Gaming 16GB DDR5 6400MHz CL32 Black - bontatlan, új
- Dell Latitude 7420, 14" FHD IPS kijelző, i7-1185G7 CPU, 16GB DDR4, 256GB SSD, W11, Számla, 1 év ga
- Újszerű Acer Aspire A515 - 15.6"FHD IPS - i5-1335U - 16GB - 512GB SSD - Win11
- Macbook Pro M3 Max 16" - 64 GB/4TB/ AJÁNDÉK MAGIC KEYBOARD 3/ 27% ÁFÁS!
- LG 27GS60QC-B - 27" Ívelt - 2560x1440 - 180Hz 1ms - AMD FreeSync - Bontatlan - 2 Év Gyári Garancia
- Jabra Speak2 75 MS Teams USB-bluetooth hangszóró
- ÚJ MacBook Pro 14" M4 PRO 24GB 512GB Space Black
Állásajánlatok
Cég: Laptopszaki Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Köszi!

