Keresés

Részletes keresés

halaloszto Creative Commons License 2015.10.01 0 1 5418

én nem szeretem a feladvány jellegű kérdéseket. inkább egy téma, és lássuk mit tud rá azonnal összehordani. meglátszik a tájékozottsága, meg a kommunikációs képességei is.

Előzmény: F1DO (5417)
F1DO Creative Commons License 2015.10.01 0 0 5417

A join-ok mindenféle változata kedvelt interjú tesztkérdés is szokott lenni.. :-)

 

Apropó, van listátok arra vonatkozóan, hogy adatbázisos interjúkon miket szoktak kérdezni? 

Ne adja, pláne ha valaki interjúztatott már miket kérdezett? 

halaloszto Creative Commons License 2015.10.01 0 0 5416

jaja. az outer join és is null meglepően hatékony tud lenni minus helyett, ha elég a kulcs alapján minusolni.

 

pl van egy logtábla, amit purge-olnak, és mindig csak egy hét van benne. én meg archiválni akarom egy saját táblába.

 

insert into sajat_tabla select * from log_tabla s, sajat_tabla t where s.id=t.id(+) and t.id is null;

 

Vajk

Előzmény: NevemTeve (5415)
NevemTeve Creative Commons License 2015.10.01 0 0 5415

(Vagy a halmazműveletek közül a MINUS-t.)

Előzmény: NevemTeve (5414)
NevemTeve Creative Commons License 2015.10.01 0 0 5414

(szerintem a 'WHERE NOT EXISTS'-et próbáljuk meg emulálni ezekkel a mesterkélt módszerekkel.)

halaloszto Creative Commons License 2015.10.01 0 0 5413

az elsőhöz kell még egy distinct, és akkor pont ugyanazt adja, kész is. :-(

Előzmény: NevemTeve (5412)
NevemTeve Creative Commons License 2015.10.01 0 0 5412

Így hirtelen azt mondanám, hogy az első n*m és n*(m-1) közötti számú sort fog válaszul adni (n az A sorainak száma, m a C sorainak száma), a második meg A azon sorait, amihez C-ben nincs megfelelő.

Előzmény: F1DO (5411)
F1DO Creative Commons License 2015.10.01 0 0 5411

Egy kérdés a közösség felé:

 

Mi a különbség a két query között az eredményt tekintve?

 

SELECT A.*
FROM  A,
           C
WHERE A.id != C.id;

 

és

 

SELECT A.*

FROM A LEFT JOIN C ON A.id = C.id WHERE C.id is null    

 

 

 

F1DO Creative Commons License 2015.10.01 0 0 5410

Köszönöm

Előzmény: dorog.zultan (5409)
dorog.zultan Creative Commons License 2015.09.28 0 0 5409

Ha nem dinamikusan változó nevű (és tartalmú) mezők vannak a táblában/lekérdezésben, hanem a mezők neve és száma fix, akkor nem feltétlenül kell oszlopnevet megjeleníteni a SELECT-ben

 

CREATE TABLE scott.teszt065 (nev VARCHAR2(100), cim VARCHAR2(100), eletkor Number(3), hajszin VARCHAR2(100));

INSERT INTO scott.teszt065 VALUES ('Lajos', 'Budapest', 41, NULL);
INSERT INTO scott.teszt065 VALUES ('Géza', NULL, 29, 'fekete');
INSERT INTO scott.teszt065 VALUES ('Análka', 'Szeged', Null, 'szőke');
INSERT INTO scott.teszt065 VALUES ('Gizi', 'Pécs', 33, 'barna');

COMMIT;

SELECT nev ||
CASE WHEN t.cim is not null then ' Cím:' || t.cim end ||
CASE WHEN t.eletkor is not null then ' Életkor:' || t.eletkor end ||
CASE WHEN t.hajszin is not null then ' Hajszín:' || t.hajszin end sor
FROM scott.teszt065 t;

Előzmény: F1DO (5374)
halaloszto Creative Commons License 2015.09.25 0 0 5408

xmldb-vel tudhatsz ilyet csinalni, de nem lesz szép.

 

 

Előzmény: F1DO (5407)
F1DO Creative Commons License 2015.09.25 0 0 5407

Egyébként a kérdés / feladat megoldás pont azért vetődött fel, mert ez valóban egy megoldandó feladat.

 

És pl előfordul, hogy a legtriviálisabb megoldás sem feltétlenül ugrik be..

 

első körben arra gondoltam, hogy használjunk valamilyen csoportosító függvényt (pl listagg), ötvözve oszlopokra null érték vizsgálattal  - és mindehhez valamilyen módon 'belekeverni' az adott oszlop nevét is. 

(csak a nem null értékű oszlopok oszlopnevét és mező adatát konkatenálja)

Nem mondom hogy megvan a tiszta megoldás, nem csak üres idő elütése szempontjából kérek tanácsot..

Törölt nick Creative Commons License 2015.09.25 0 0 5406

De ez megint csak feladat függvénye. 

Ha olyan programot gyártok, ami egy évben ötször fut tíz percig... bocs, de hol érdekel a performancia?

És megírom, mert esetleg minden futása megspórol öt napi munkát.

Előzmény: halaloszto (5403)
halaloszto Creative Commons License 2015.09.25 0 0 5405

szerinted nincs értelme itt tanfolyamot tartani -> nem tartasz. ennyi.

Előzmény: Törölt nick (5402)
Törölt nick Creative Commons License 2015.09.25 0 0 5404

Kérdező=bárki, bármely fórumon, aki feldobott egy kérdést.

 

Előzmény: F1DO (5401)
halaloszto Creative Commons License 2015.09.25 0 0 5403

Pont erre gondoltam. Hogy semmiképp ne jusson eszébe olyan cuccot írni, ami futásidőben az all_tab_columns-ot kérdezi. Meg bármi egyéb adatszótárt. Ugyanis azok nagyon nem erre vannak tervezve, óriási performancia szopások lesznek belőle később.

 

Vajk

Előzmény: Törölt nick (5399)
Törölt nick Creative Commons License 2015.09.25 0 0 5402

Igaz. De... ha a kérdező nem tudja, akkor rengeteg egyéb dolgot sem. -> minek tanfolyamot tartani?

Ha tisztában van vele, csak épp erre van szüksége... -> minek tanfolyamot tartani?

Ezt sohasem tudtam megérteni.

Kérdezek valamit, akkor a kérdésemre várok választ, nem arra vagyok kíváncsi, hogy mennyire nem értek hozzá.

 

A fene tudja, a kérdező miért hozta a példáját. Egyáltalán nem biztos, hogy pontosan azt akarja megcsinálni. Lehet, hogy van oka annak is, hogy ezt akarja és annak is, hogyha nem a valós feladatot vázolja.

Előzmény: F1DO (5401)
F1DO Creative Commons License 2015.09.25 0 0 5401

Erre írta Halaloszto, hogy az ilyen rendszer leíró táblákat - másnéven adatszótár nézeteket - nem ajánlott query-ben használni..

Előzmény: Törölt nick (5399)
F1DO Creative Commons License 2015.09.25 0 0 5400

Pontosan. 

Kis kezünkkel beírjuk... 60 + oszlopos rekordokat tartalmazó táblákról van szó... így ezt hagytam volna épp ki.

Ha nincs más megoldás hát nincs más megoldás, legalább bepötyögni nem kell, a táblák oszlop szerkezete, azok nevei lekérhetőek, onnantól copy & paste.  Csak nagyon csúnya lesz a kód a rengeteget táblanévtől, táblanév konkatenációtól. és ha még csoportosítási függvényt is használunk hozzá akkor még egyszer az osszes 60 oszlop név felsorolva a group by résznél.... 'gyönyörű'...

Előzmény: halaloszto (5397)
Törölt nick Creative Commons License 2015.09.25 0 0 5399

Egyébként nem lett volna egyszerűbb megemlíteni, hogy az ALL_TAB_COLUMNS view-ból le tudja kérni? ;)

 

Előzmény: halaloszto (5397)
Törölt nick Creative Commons License 2015.09.25 0 0 5398

Az eredeti ez volt, de utána valaki elkezdte feszegetni, hogy hülyeség a dinamikusan változó táblaszerkezet.

Előzmény: halaloszto (5397)
halaloszto Creative Commons License 2015.09.25 0 0 5397

Az eredeti kérdés ez volt:

 

"2 - hogy lehet oszlopnevet megjeleníteni rekord mezőben?"

 

A kérdező olyan megoldást keresett, ahol a táblastruktúra (pl oszlopnév) lekérdezhető a select részeként. És erre írtam, hogy a select írásának pillanatában az oszlopnevek ismertek, ergo úgy lehet megjeleníteni hogy a kiskezünkkel beleírjuk. 

 

Vajk

Előzmény: Törölt nick (5396)
Törölt nick Creative Commons License 2015.09.25 0 0 5396

Nem teljesen egyről. Én a telepítőbe kerülő szoftverről beszéltem, amit felkészítenek a későbbi táblaszerkezet módosítások kezelésére is.

Mondjuk ne okozzon gondot, hogy ha egy módosított  adatbázis alapján kell egy képernyőt/formot generálni.

Előzmény: halaloszto (5395)
halaloszto Creative Commons License 2015.09.25 0 0 5395

egyről beszélünk. amikor kész, használják, akkor már nem változik. ezért nincs olyan lekérdezés, amit ne lehetne előre megírni mert még nem ismert hogy a táblának hány és milyen oszlopa lesz. ha meg ismert, akkor simán megírom és kész, nincs kérdés.

 

Vajk

Előzmény: Törölt nick (5392)
Anne Duffield Creative Commons License 2015.09.25 0 0 5394

Én is dolgoztam ilyen rendszerben, de

--az alaptáblákhoz nekünk nem volt szabad hozzányúlni

--a kiegészítő táblákat egyszer megterveztük (jól, rosszul) és csak ritkán változott a szerkezetük!

Előzmény: Törölt nick (5381)
Törölt nick Creative Commons License 2015.09.25 0 0 5393

Vajon mely verziók voltak érintettek?

Ezt egyszer én is kinyomoztam, de kíváncsi lennék, javították-e azóta.

Előzmény: NevemTeve (5391)
Törölt nick Creative Commons License 2015.09.25 0 0 5392

Mit értesz dinamikus alatt?

Menet közben, a már működő rendszerben nem.

De hacsak nem tévedek, amíg a gyári telepítőből kész rendszer lett, addig azért bővülhetett az adatbázis.

Legalábbis bennem ilyen emlékek maradtak róla.

(BMC-s idők előtti verzió, az újabbat nem ismerem)

Előzmény: halaloszto (5390)
NevemTeve Creative Commons License 2015.09.25 0 0 5391

Az az Oracle-val is előfordul... ugyebár az ora-1 azt jelenti, hogy valamilyen constraint sérül -- de hogy melyik, azt a hibaüzenet szövegéből kell kinézni, meg kell keresni a zárójelbe tett részt. De ha az egyetlen z betű, akkor valami egybites user magyarra kapcsolta az üzenetek nyelvét.

Lásd itt: http://forum.index.hu/Article/viewArticle?a=131977209&t=1001339

Előzmény: dorog.zultan (5388)
halaloszto Creative Commons License 2015.09.25 0 0 5390

a remedy-t hagyjuk, dolgoztam vele. fejlesztőként. nem a legszebb architektúra, de dinamikusan abban sem változott a séma.

 

Vajk

Előzmény: Törölt nick (5385)
Törölt nick Creative Commons License 2015.09.25 0 0 5389

Az.

Mikor először láttam, azt hittem egy hülye vicc. :((

Előzmény: dorog.zultan (5388)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!