Hirdetés
- gban: Ingyen kellene, de tegnapra
- MasterDeeJay: Ram gondolatok 2026 január - DDR3-as gép is lehet megoldás? Mi a minimum?
- Parci: Milyen mosógépet vegyek?
- ldave: New Game Blitz - 2026
- bitpork: Ha Isten létezik...
- Candy: Kossuth Lajos azt üzente, elfogyott a gémergépe
- sziku69: Fűzzük össze a szavakat :)
- Zaied: Logitech G7 Laser vitarendezés
- Luck Dragon: Asszociációs játék. :)
- sziku69: Szólánc.
Új hozzászólás Aktív témák
-
tm5
tag
válasz
Apollo17hu
#5468
üzenetére
Ez talán még jobb, csak annyi kéne még hozzá, hogy adnék egy "minimum rank" értéket a t2 táblához és a query végén ahhoz hasonlítanám a match_rate-et és akkor tovább csökkennne a false pozitiv:
select t1.*, tt.kategoria
from t1
left join
(
select t.*, RANK() OVER(PARTITION BY t.id ORDER BY t.match_rate desc) AS rnum
from
(
select
t1.id
,t2.kategoria
,
(case when ifnull(t1.m1,'*') != ifnull(t2.m1,'*') then 0 when ifnull(t1.m1,'*') = ifnull(t2.m1,'%') then 1 else 0 end) +
(case when ifnull(t1.m2,'*') != ifnull(t2.m2,'*') then 0 when ifnull(t1.m2,'*') = ifnull(t2.m2,'%') then 1 else 0 end) +
(case when ifnull(t1.m3,'*') != ifnull(t2.m3,'*') then 0 when ifnull(t1.m3,'*') = ifnull(t2.m3,'%') then 1 else 0 end) +
(case when ifnull(t1.m4,'*') != ifnull(t2.m4,'*') then 0 when ifnull(t1.m4,'*') = ifnull(t2.m4,'%') then 1 else 0 end) +
(case when ifnull(t1.m5,'*') != ifnull(t2.m5,'*') then 0 when ifnull(t1.m5,'*') = ifnull(t2.m5,'%') then 1 else 0 end) +
(case when ifnull(t1.m6,'*') != ifnull(t2.m6,'*') then 0 when ifnull(t1.m6,'*') = ifnull(t2.m6,'%') then 1 else 0 end) +
(case when ifnull(t1.m7,'*') != ifnull(t2.m7,'*') then 0 when ifnull(t1.m7,'*') = ifnull(t2.m7,'%') then 1 else 0 end) +
(case when ifnull(t1.m8,'*') != ifnull(t2.m8,'*') then 0 when ifnull(t1.m8,'*') = ifnull(t2.m8,'%') then 1 else 0 end) as match_rate
, t1.m1
, t1.m2
, t1.m3
, t1.m4
, t1.m5
, t1.m6
, t1.m7
, t1.m8
from t1 join t2
--order by 1,3 desc;
) t
) tt on t1.id = tt.id and tt.rnum = 1 and tt.match_rate > 0 -
tm5
tag
válasz
Apollo17hu
#5468
üzenetére
Hát én valamni ilyesmivel indítanék:
select t.*, ROW_NUMBER() OVER(PARTITION BY t.id ORDER BY t.match_rate desc) AS row_num2
from
(select
t1.id
,t2.kategoria
,
(case when ifnull(t1.m1,'*') != ifnull(t2.m1,'%') then -100 when ifnull(t1.m1,'*') = ifnull(t2.m1,'%') then 1 else 0 end) +
(case when ifnull(t1.m2,'*') != ifnull(t2.m2,'%') then -100 when ifnull(t1.m2,'*') = ifnull(t2.m2,'%') then 1 else 0 end) +
(case when ifnull(t1.m3,'*') != ifnull(t2.m3,'%') then -100 when ifnull(t1.m3,'*') = ifnull(t2.m3,'%') then 1 else 0 end) +
(case when ifnull(t1.m4,'*') != ifnull(t2.m4,'%') then -100 when ifnull(t1.m4,'*') = ifnull(t2.m4,'%') then 1 else 0 end) +
(case when ifnull(t1.m5,'*') != ifnull(t2.m5,'%') then -100 when ifnull(t1.m5,'*') = ifnull(t2.m5,'%') then 1 else 0 end) +
(case when ifnull(t1.m6,'*') != ifnull(t2.m6,'%') then -100 when ifnull(t1.m6,'*') = ifnull(t2.m6,'%') then 1 else 0 end) +
(case when ifnull(t1.m7,'*') != ifnull(t2.m7,'%') then -100 when ifnull(t1.m7,'*') = ifnull(t2.m7,'%') then 1 else 0 end) +
(case when ifnull(t1.m8,'*') != ifnull(t2.m8,'%') then -100 when ifnull(t1.m8,'*') = ifnull(t2.m8,'%') then 1 else 0 end) as match_rate
, t1.m1
, t1.m2
, t1.m3
, t1.m4
, t1.m5
, t1.m6
, t1.m7
, t1.m8
from t1 join t2
--order by 1,3 desc;
) t
de e kőré még kell valami ilyesmi:select t1.*, tt.kategoria
from t1
left join
(
-- ide jon az elozo query
) tt on t1.id = tt.id and tt.rnum = 1 and tt.match_rate != -800
De ez még nem tökéletes. Van benne néhány fal pozitív kategória.Azért szedtem ketté, mert azzal a belső queryvel még kell játszani és finomhangolni a match_rate-et
Jah és remélem nem olyan sok rekord van egyik táblában sem, mert azért a descartes szorzat befigyel rendesen.
Új hozzászólás Aktív témák
Hirdetés
- iPhone-t használók OFF topikja
- Okos Otthon / Smart Home
- Robotporszívók
- AMD Navi Radeon™ RX 9xxx sorozat
- TCL LCD és LED TV-k
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Fotókon a Samsung Galaxy A57
- Jogász topik
- S.T.A.L.K.E.R - Lost Alpha
- Autós topik látogatók beszélgetős, offolós topikja
- További aktív témák...
- ÁRGARANCIA!Épített KomPhone Ryzen 7 7700X 32/64GB RAM RTX 5070 Ti 16GB GAMER PC termékbeszámítással
- Lenovo ThinkPad dokkolók: USB-C 40A9/ 40AY/ 40AS/ Thunderbolt 3 40AC/ Hybrid USB-C DisplayLink 40AF
- Apple iPhone 14 Pro 128GB,Újszerű,Dobozaval,12 hónap garanciával
- Dobozos! Xbox Series X 1 TB + kontroller 6 hó garancia, számlával!
- 360 áthajthatós! Dell Latitude 5330 2 in 1 i7-1265U 10magos! 16GB 512GB 13.3" FHD 1 év garancia
Állásajánlatok
Cég: Central PC számítógép és laptop szerviz - Pécs
Város: Pécs
Cég: Laptopműhely Bt.
Város: Budapest

