- Honor Magic5 Pro - kamerák bűvöletében
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- Keretmentesít a Galaxy S25 FE
- Apple Watch Ultra - első nekifutás
- Honor 200 - kétszázért pont jó lenne
- Kiborult a Nothing Phone (3) pletykakosara
- Az Oppo Find X8 Ultra lett a legvékonyabb kameramobil
- Magisk
- iPhone topik
- Android alkalmazások - szoftver kibeszélő topik
Új hozzászólás Aktív témák
-
nyunyu
félisten
Jim74 válaszát kiegészítve, hogy a példádat adja ki:
select t1.NAME,
coalesce(t2.Created_date, 'NINCS') Created_date,
coalesce(t3.Description,'NINCS') Description
from tabla_1 t1
left join tabla_2 t2
on t2.ID = t1.ID
left join tabla_3 t3
on t3.ID = t2.ID2
where t1.NAME in ('A','B','C','D','E','F','G')
order by t1.NAME;(Eredetileg nvl()-lel akartam írni, de az Oracle specifikus függvény, ahogy az isnull() SQL Serveres, egyik sem szabvány SQL.
Coalesce() az elvileg szabványos, minden DBben működnie kéne.) -
Pontosítok, tabla_1-ből minden jön, a többiből, ahol van találat, de ahol nincs ott is megjelenik a tabla_1 rekordjai, csak a többi táblából megjelenített érték azokon a sorokon NULL érték lesz.
Ha a NULL kiírás nem megfelelő, akkor az ISNULL függvénnyel tudod tetszőleges értékre cserélni.
Pl. ISNULL(t2.Created_date, 'NINCS')
Ekkor, ha a tabla_2-ben nincs tabla_1 ID-hez kapcsolható rekord, akkor a Created_date oszlopban a NULL érték helyett NINCS érték fog megjelenni. -
Szia!
Nem ölünk meg senkit, aki nem sql pro
. Azért van a fórum, hogy segítsünk, tapasztalatot osszunk meg. Én is csak a felszínt kapargatom és még élek.
select * from tabla_1 t1
left join tabla_2 t2 on t1.ID = t2.ID
left join tabla_3 t3 on t1.ID = t3.IDBocs a formázásért telefonról vagyok.
Elvileg így minden sor lejön minden táblából és ahol nincs találat, ott NULL értékeket fogsz kapni.
Ha rosszul értelmeztem az igényt, akkor sorry. -
nyunyu
félisten
IN operátor+alquery:
select *
from adattabla at
where at.azonosito in (select azonosito from temp);De akár JOINnal is szűrhetsz:
select at.*
from adattabla at
join temp t
on t.azonosito = at.azonosito;Régebben a JOINt javasolták a kétféle megoldás közül, mert az gyorsabb volt, manapság már nincs futási idő különbség, mert a (NOT) INt is (ANTI) JOINra fordítja a DB optimalizálója.
-
DeFranco
nagyúr
Eljátszottam vele dummy adatokon és tényleg működött hárommal is, majd utána az éles lekérdezésben is amit nem értek, mert eddig éles táblákon "missing right parenthesis" hibát dobott, annak ellenére, hogy a forma biztosan (murphy nyilván, de ellenőriztem) jónak kellett legyen, mert egymás alá másoltam háromszor ugyanazt a blokkot, csak 3 különböző define által előírt paraméter változott.
Murphy törvénye, valamit nyilván benézhettem mégis, ez a megerősítés viszont átlendített, hogy működnie kellene, nincs limitáció (nem találtam róla semmit a neten, ezzel kezdtem a keresést). Köszi!
@nyunyu: Create table jogom nincs, csak lekérdezni (select) tudok. Próbáltam volna én is declare felé elindulni, kínomban már with-eltem elé egy táblát de persze egyik sem működött. Köszi a visszajelzést neked is.
-
nyunyu
félisten
Metszet nélküli az a left/right join is null-lal kombinálva.
select a.*
from tabla a
left join temp b
on b.id = a.id
where b.id is null;Ez szerintem ekvivalens ezzel:
select a.*
from temp b
right join tabla a
on a.id = b.id
where b.id is null;Ezeket a szörnyűségeket le se merem írni:
select a.*
from tabla a, temp b
where a.id = b.id (+)
and b.id is null;select a.*
from temp b, tabla a
where b.id (+) = a.id
and b.id is null; -
nyunyu
félisten
Mondjuk join feltételnek megadod mindkét mezőt AND-dal?
SQL-92 szintaxis:
select t1.*
from tabla1 t1
join temp t2
on t2.valami = t1.valami
and t2.masikmezo = t1.masikmezo;Szabvány előtti ősrégi szintaxis:
select t1.*
from tabla1 t1, temp t2
where t2.valami = t1.valami
and t2.masikmezo = t1.masikmezo;Utóbbit csak a nagyon régi DB gyártók (Oracle, Teradata), illetve az újabbak közül csak páran (MS SQL 2008-tól, MySQL?) ismerik csak.
Nagyon nagy (100k+ rekord) tábla esetén sokat lehet gyorsítani rajta, ha legalább az egyik joinolt oszlopon van index.
(Esetleg partícionálod a táblát az egyik kulcs mentén, de az már nagyon advanced megoldás, és nem minden ócó/ingyenes DB motor tudja) -
Apollo17hu
őstag
Transzponálhatod pl. PIVOT függvénnyel, vagy lekorlátozhatod az eredeti selectet úgy, hogy csak az egyik eredménysort adja vissza, aztán egy másik selectben pedig csak a másik eredménysort. Ha utóbbit választod, akkor mehet rá a Descartes-szorzat:
SELECT egyik.mezo AS mezo_1, masik.mezo AS mezo_2
FROM (egyik_select) AS egyik, (masik_select) AS masik
Új hozzászólás Aktív témák
Hirdetés
- Androidos tablet topic
- Kávé kezdőknek - amatőr koffeinisták anonim klubja
- Mielőbb díjat rakatnának a görögök az olcsó csomagokra az EU-ban
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Melyik tápegységet vegyem?
- Konzolokról KULTURÁLT módon
- Subaru topik
- PlayStation 5
- Luck Dragon: Asszociációs játék. :)
- Philips LCD és LED TV-k
- További aktív témák...
- Lenovo Legion 5 Pro Gamer Laptop 2év garanciával (i7 13700HX, RTX 4060)
- IPhone 11 Pro max 64GB megkímélt új emelt kapacitású akku!
- Apple Pencil Pro bontatlan 1 év Apple jótállás
- Nitro ANV15-51 15.6" FHD IPS i5-13420H RTX 4060 32GB 512GB NVMe magyar vbill gar
- Apple watch Series 9 41mm cellular hibátlan 2026.02. 24. Apple jótállás
- RÉSZLETRE , Bankmentes , kamatmentes Asus Rog Zephyrus G16
- Bomba ár! Lenovo ThinkPad X250 - i5-5GEN I 8GB I 128GB SSD I 12,5" HD I Cam I W10 I Garancia!
- AZONNALI SZÁLLÍTÁSSAL Eladó Windows 8 / 8.1 Pro
- BESZÁMÍTÁS! ASUS ProArt Z790-CREATOR WIFI alaplap garanciával hibátlan működéssel
- REFURBISHED és ÚJ - HP USB-C/A Universal Dock G2 docking station (5TW13AA) (DisplayLink)
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft
Város: Budapest