Keresés

Részletes keresés

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)
dorog.zultan Creative Commons License 2015.09.25 0 0 5388

Még az MS Access függvényeket is fordítják myelvre, ki se tudod kapcsolni, leforditja, aztán futás közben meg nem tudja értelmezni és szétakad. Ostobaság

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

Abban természetesen egyetértünk, hogy az oszlopnév legyen csak egy név és semmi több.

Ellenpéldának ott vannak a Microsoft szoftverek. Ha jól tudom, még az Excel-beli függvények neveit is az adott nyelvhez igazítják. :((

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

Kérdés, hogy kit nevezünk végfelhasználónak.

Az Oracle úgy emlékszem, azért lett olyan, amilyen,  hogy bizonyos végfelhasználók maguk turkálhassanak az adataik közt. No persze nem Gizike a recepción.

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

Ami konkrét példát tudnék, az nagyon szar, de nem azért, mert az ügyfél igényeihez lehet igazítani.

 

De eszembe jutott másik is: találkoztam például egy Remedy Helpdesk nevű szoftver egy ősi változatával. Az is ilyesmi lehetett és rá viszonylag kevés panasz volt. Ilyesmi alatt értem, hogy volt egy adatbázisa, fix mezőkkel, de azt az igényeknek megfelelően lehetett bővíteni. Sajnos belülről alig ismertem, elsősorban végfelhasználó voltam.

 

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

Egy szinttel feljebb van, valami toolkitet használ formázásra, aminek a bemenete egy select.

Előzmény: NevemTeve (5380)
halaloszto Creative Commons License 2015.09.25 0 0 5383

mindenki tud szar megoldásokra példát.

 

viszont ha van jó megoldás is, akkor inkább példálózzunk azzal, tanuljunk abból.

 

pl van amit flex-field-nek hívnak.

 - a táblában van 20 darab varchar oszlop, attribute01, attribute02 ...

 - van egy leíró tábla ami tartalmazza hogy melyik van ezek közül használva, mi a hozzátartozó címke, mi a tárolt adat típusa és format maskja

 - a testreszabás a leíró kitöltésével történik

 - a kód a leíró alapján kezeli az oszlopokat.

 

 

Az hogy az oszlopnévből tudom hogy a UIon az kell legyen hogy 'Lakcím', az nonszenz. És akkor ékezetes oszlopnevek lesznek? És ha le kell fordítani a cuccot szlovákra, akkor át kell nevezni az oszlopokat?

 

Vajk

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

amen

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

Kivéve, ha valami testre szabható rendszerről beszélünk, aminek a magját több helyre eladják, de  a késztermék már erősen függ a vevő igényeitől.

Hm?

Tudok rá konkrét példát is :(

Előzmény: Anne Duffield (5379)
NevemTeve Creative Commons License 2015.09.25 0 0 5380

Az igazi kérdés az, hogy hogy kerül a végfelhasználó a Sql*Plus közelébe? Mert normális esetben nem kerül, hanem valamilyen programból (Pro*Cobol-tól PHP-n át Javáig sokminden lehet) érjük el az adatbázist, és abban csináljuk a formázott output előállítását.

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