- MWC 2026: új Tecno Camon 50 és Pova 8 modellek jönnek Barcelonába
- Reklámok kikapcsolása Xiaomi, Redmi és Poco telefonokon
- Kickstarteren a Sharge 300 wattos power bankja
- Nothing Phone (3)-szerű csavart kaphat az Infinix Note 60 Pro kamerablokkja
- Ipari strapatelefon 4G-vel és PTT-támogatással a HMD-től
- Nokia N8 - vajon elég lesz-e?
- MIUI / HyperOS topik
- iPhone topik
- Android alkalmazások - szoftver kibeszélő topik
- OnePlus 15R - régen minden jobb volt
- Picit nagyobb kijelzőt, jóval nagyobb aksit kaphat a Honor 600
- Milyen okostelefont vegyek?
- Xiaomi 15T - reakció nélkül nincs egyensúly
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Újabb hét, újabb Galaxy S26 ké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
- Arc Raiders
- Intel Dual Core 2000 felhasználók barátságos offolós topikja
- Interactive Brokers társalgó
- Milyen egeret válasszak?
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Így tüzelt el százbillió forintot az AI a héten
- Autós topik
- Gurulunk, WAZE?!
- Átírja az ENSZ az önvezetés szabályait
- Apple MacBook
- További aktív témák...
- AMD Ryzen 7 7800X3D - Új, 3 év garancia - Eladó!
- 218 - Lenovo ThinkBook 16p (G5 IRX) - Intel Core i9-14900HX, RTX 4060
- Thinkpad P16 Gen2 16" FHD+ IPS i7-13700HX RTX A1000 32GB 1TB NVMe ujjlolv gar
- T490s 14" FHD IPS i5-8365U 16GB DDR4 256GB NVMe SSD ujjlolv IR kam új akku gar
- X1 Carbon 12th 14" FHD+ IPS érintő Ultra 7 155U 32GB 512GB NVMe ujjlolv IR kam gar
- MÉG TOVÁBBI ÁRCSÖKKENTÉS MacBook Pro 17" i7 2.6 GHz 8GB RAM 8 ciklus az akkuban!
- ÁRGARANCIA! Épített KomPhone i5 12400F 16/32/64GB RAM RTX 5050 8GB GAMER PC termékbeszámítással
- LG 32GS94UX - 32" OLED / UHD 4K / 240Hz - 480Hz & 0.03ms / 1300 Nits / NVIDIA G-Sync / AMD FreeSync
- ÁRGARANCIA!Épített KomPhone i9 14900KF 64GB RAM RTX 5080 16GB GAMER PC termékbeszámítással
- Dobozos! Xbox Series X 1 TB + kontroller 6 hó garancia, számlával!
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Central PC számítógép és laptop szerviz - Pécs
Város: Pécs
Köszi!

