Új hozzászólás Aktív témák
-
#65304576
törölt tag
Eltartott egy ideig, mire értelmeztem, de azt hiszem, értem.
Tehát van egy többé-kevésbé bonyolult képleted (kivonás), amit egy csomó más helyen is használni szeretnél ugyanazon select-en belül, és ezért szeretnéd először kiszámolni, majd a többi oszlopnál is valamiféle változót használni.A probléma csak kényelmi és vizuális ("csúnyán néz ki"), performanciára nincs hatása, mert az első kivonás eredménye kvázi konstansként behelyettesítődik majd a többi képletbe is (a parser felismeri az azonos kifejezést).
Az Oracle-nek egyébként nincs inline változója, bár al-select-ekkel (inline view, vagy with ... as) megoldható a dolog, azzal igen valószínű, hogy csak rosszabbul jársz.
Szóval marad a ctrl+c / ctrl + v.
(Vagy a pl/sql, de az is lassabb lesz.)Ha a kifejezést máshol is használni kellene (pl. where-ben), akkor már esetleg lehet gondolkozni azon, hogy előre kiszámolni és primary key alapján visszakötni a főtáblához, immár egyszerű oszlopként. Pl.:
with sub_diff as ( select id, end_time - start_time mp_diff
from table1 where (end_time - start_time) < 5 )
select d.data1 / t.mp_diff, d.data2 / t.mp_diff, d.data3 / t.mp_diff
from sub_diff t, table1 d
where d.id = t.id -
Jester01
veterán
1. Az alias nem befolyásolja a where-t, ott attól még nyugodtan lehet használni az eredeti nevet is.
2. ez valami rettentő nagy eredményt ad: Ugyanis az al-selectben ha nem írod ki explicit a táblanevet/aliast akkor az a belső táblá(k)ra vonatkozik. Tehát tulajdonképpen azonosságot írtál (eltekintve attól, hogy NULL != NULL). Helyesen a külső selectben kell megadni tábla aliast és arra hivatkozni. Így ni:select bla, bla2, bla3, bla4,
(select count(*) from tabla where bla = kulso.bla) from tabla kulso where ...
Új hozzászólás Aktív témák
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Vezetékes FEJhallgatók
- Vezeték nélküli fülhallgatók
- Nyomtató topik
- Víz- gáz- és fűtésszerelés
- Milyen billentyűzetet vegyek?
- exHWSW - Értünk mindenhez IS
- alza vélemények - tapasztalatok
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Hálózati / IP kamera
- További aktív témák...
- Lenovo ThinkPad T480 i7-8650U / 16GB / 512GB SSD / FHD Dupla akku Win 11 Pro Szép állapot
- Kingston FURY Beast 32GB DDR4 3200MHz (Beszámítás)
- MEDION Erazer Major X20 Gamer laptop -40% i7-13700HX 16/1TB NVIDIA RTX 4070 8GB QHD 240Hz
- Seagate IronWolf 4TB HDD 100/100 Beszámítás OK!
- Lenovo LOQ 15IRH8 / i5-13500H / RTX 4060 / 16GB / garancia
- Samsung Galaxy S21 Ultra 5G 256GB, Kártyafüggetlen, 1 Év Garanciával
- Azonnali készpénzes AMD CPU AMD VGA számítógép felvásárlás személyesen / postával korrekt áron
- ÁRGARANCIA!Épített KomPhone Ryzen 5 7600X 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- HIBÁTLAN iPhone 17 Pro Max 256GB Deep Blue-1 ÉV GARANCIA - Kártyafüggetlen, 100% Akksi
- SteelSeries vezeték nélküli fejhallgató Arctis 9
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Tehát van egy többé-kevésbé bonyolult képleted (kivonás), amit egy csomó más helyen is használni szeretnél ugyanazon select-en belül, és ezért szeretnéd először kiszámolni, majd a többi oszlopnál is valamiféle változót használni.
