Új hozzászólás Aktív témák
-
kezdosql
tag
Ha nem doglott a forum, akkor lenne ket kerdesem:
1. keresek olyan weboldalt, ahol kiprobalhatnek elesben egy pelda alkalmazast, ugy tunik, harom table es par segedtabla kell hozza, viszont bonyolult lekerdezeseket kell megoldani.
2. keresek valkit, aki segitene a tablak "idogepesiteseben", mert esetenkent naponta valtozo tartalmat kell egysegesen kezelni idoszakon belul.
-
martonx
veterán
válasz kezdosql #4051 üzenetére
Miért lenne döglött a fórum? http://sqlfiddle.com/
Itt tudsz játszani SQL engine-ekkel. Viszont nem egy mai darab ez az oldal.
Én a helyedben feltennék egy lokális SQL-t (PostgreSql / MySQL / MSSql / Oracle) és leginkább azon játszanék, ráadásul könnyen lehet localban backupolnod is, és bármikor visszaállítani.
Az SqlFiddle előnye pedig, hogy az alapján könnyen tudsz tőlünk segítséget kérni, ha megakadsz valahol.Én kérek elnézést!
-
kezdosql
tag
válasz martonx #4052 üzenetére
Koszonom a gyors valaszt.
Korabbiakra nem jot semi valasz, ezert gondoltam, hogy mar cask en irok ide egy ideje.Most nem tudok semmit telepiteni es nincs is ra idom, plane, hogy megtanuljak uj programok kezeleset.
Amint irtam, a problemam lenyege az, hogy adatok neha bizonyos naptol megvaltoznak, igy ezt kellene valahogy kezelni, de korabban azt tapasztaltam, hogy datumot nehez bevonni az indexelesbe.
Igaz, regen csinaltam, raadasul, ahogy latom a fiddle MySQL alatt megy, nem tudom, az hogyan kezeli a datumokat, de majd jatszok vele.
-
sztanozs
veterán
válasz kezdosql #4053 üzenetére
Nem tudom miért volna probléma a DateTime indexelése (főleg ha letrimmelsz egy DateTime-ot Date-re, akkor az index se lesz nagy, és gyorsan is működik).
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
martonx
veterán
válasz kezdosql #4053 üzenetére
"Korabbiakra nem jot semi valasz, ezert gondoltam, hogy mar cask en irok ide egy ideje." - korábban nettó hülyeségekkel traktáltál minket, kérdezés címszó alatt, nem csoda, hogy egy idő után már senki se válaszolt
Most hogy remélhetőleg elkezdesz normális, értelmes, konkrét kérdéseket feltenni, hidd el jönni fognak a válaszok is. Eddig se mi voltunk a helikopterek, még ha egy bizonyos szempontból ez úgy is tűnhetett
Én kérek elnézést!
-
kezdosql
tag
válasz sztanozs #4057 üzenetére
Date-vel vagy evet, vagy pontos napot kell megadni.
Az esemeny ev/ho szovegben szerepel idoszak cimen, karakteresen tol-ig savonkent, numerikus hivatkozassal a sorbaallitashoz.
Utobbival az esemeny megadhato.
Na de hogyan oldod meg, hogy a vizsgalt idoszak az par honap, es az esemeny kozben jelentkezik?
Aranyositod az idoszakot napra?
Akkor a savos idoszakokat at kell irni from-to datum mezokre, es ahhoz tartozhat a numerikus mezzo? -
-
kezdosql
tag
válasz martonx #4061 üzenetére
Folyamatosan lekezeltek, mikozben azt se ertitek meg, hogy ahhoz, hogy a program kodot megirjam, eloszor az adatstrukturat kell tisztazni.
Itt egy pelda:
Sport szezon 2016 osz/2017 tavasz - ez karakteres
ez az 51. szezon - ez numerikus
A csapat gyenge szereplese miatt 2016.12.10-en ket uj jatekost igazolnak le, amivel nyerove valnak.Hogyan osztod fel az 51. szezont (numerikus) 2016 osz/2017 tavasz (karakteres) idoszakot datumok szerint ket reszre?
-
Apollo17hu
őstag
válasz kezdosql #4063 üzenetére
Csinalhatnal egy calendar tablat, amiben felveszed az osszes datumot. Teszel bele egy mezot, ami megmutatja, hogy az adott naptari nap melyik szezon.
Es lenne a tenytablad, amiben a konkrrt esemenyeket rogzited datumokkal. Ha rogzitettel egy esemenyt, akkor az esemeny datuma menten a calendar tablabol megtudod, hogy melyik szezont erinti.
-
-
martonx
veterán
válasz kezdosql #4063 üzenetére
például:
season from to
51 2016-09-01 2016-12-31
51 2017-01-01 2017-03-31Látod, mihelyst értelmeset, konkrétat kérdezel, már jönnek is a válaszok. Amíg csak általánosságban puffogtatod a hülye kérdéseket, addig ne lepődj meg, hogy általánosságban kapod a hülye válaszokat.
Én kérek elnézést!
-
kezdosql
tag
válasz Apollo17hu #4064 üzenetére
Koszonom, talan valami ilyesmi lenne a megoldas, osszegyujteni egy tablaba mindenfele esemenyt es valahogy ahhoz igazitani a dolgokat.
-
Apollo17hu
őstag
válasz kezdosql #4068 üzenetére
Csinálhatod azt is, hogy mindent, de mindent egyetlen táblában tárolsz.
Esemény dátuma, szezon, esemény megnevezése, eseményhez kapcsolódó játékos, játékos csapata, játékos lábmérete stb. Minden rekord rengeteg attribútumot (mezőt) tartalmazna, de az adattáblára írt lekérdezések az elvárthoz képest sokkal lassabban futnának, mert a tábla nem lenne normalizált.
Normalizáláshoz adatmodellt kellene kialakítani, ami viszont nem ott kezdődik, hogy az egyes mezőknek megmondjuk az adattípusát. Hanem megnézzük, hogy az ismétlődő értékek közül melyeket lehet dimenziótáblában tárolni. Ilyenek pl.: [dátumok] tábla, [csapatok] tábla, [játékosok] tábla, és ezek kapcsolódhatnának a ténytábláddal, amiben ezekre a táblákra csak hivatkozol, nem tárolod a bennük lévő összes mezőt.
[ Szerkesztve ]
-
david199801
tag
Hali!
sqldeveloperben szeretném az adott táblát megcsinálni de nem engedi a hibakódRA-00904: : érvénytelen azonosító
Ez lenne a parancs:
CREAT TABLE Rendeles(
k_rendeles_id INT primary key,
r_tipus VARCHAR(50),
r_ar VARCHAR (10),
k_nev VARCHAR references Könyvek(k_nev),
r_nev VARCHAR (10) References Vevő(r_nev),
); -
válasz david199801 #4070 üzenetére
k_nev-nek nem adtál meg méretet.
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
updog
senior tag
válasz david199801 #4070 üzenetére
Létezik-e már Könyvek tábla, annak k_nev oszlopa, illetve Vevő tábla és/vagy r_nev oszlopa?
"Bocs, főnök, de én csak két emberben bízom. Az egyik én vagyok. Nem maga a másik." || "Hóhahó, mégis van graffaló!"
-
nagyúr
válasz david199801 #4070 üzenetére
az utolsó előtti sorba nem kell vessző.
CREATE TABLE Rendeles(
k_rendeles_id INT primary key,
r_tipus VARCHAR(50),
r_ar VARCHAR (10),
k_nev VARCHAR (100) references Könyvek(k_nev),
r_nev VARCHAR (10) References Vevő(r_nev)
);a képen jelzi is az sql developer, van utána egy hullámos piros vonal.
[ Szerkesztve ]
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
nagyúr
válasz david199801 #4076 üzenetére
a hibaüzenet elég egyértelmű. csak olyan mezőre lehet használni a referencest, amelyik unique a saját táblájában, vagy primary key (és emiatt unique).
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
updog
senior tag
válasz david199801 #4078 üzenetére
Nézd meg, van-e valami ID a vevő táblában, és referálj arra (ha nincs, adj hozzá, trigger+sequence töltheti).
A screenshotból adódóan egy megjegyzés: a SYSTEM user alá nem nagyon illik semmit csinálni kézzel Készíts egy játszós usert (google: oracle create user) vagy használd a sample sémákat (hr, oe, ilyenek).
oracle.com tele van jobbnál jobb tutorialokkal (ha kifejezetten Oracle-t kell használni), nem nagyon lehet megúszni ha nem adják le szájbarágósan (nem szokták). Pl. [link]
[ Szerkesztve ]
"Bocs, főnök, de én csak két emberben bízom. Az egyik én vagyok. Nem maga a másik." || "Hóhahó, mégis van graffaló!"
-
nagyúr
válasz david199801 #4078 üzenetére
legkönnyebben úgy, hogy ráteszel egy unique constraintet.
ALTER TABLE VEVO
ADD CONSTRAINT VEVO_R_NEV_unique UNIQUE(R_NEV);
commit;ez persze kizárólag technikai megoldásnak tekinthető, mert így nem lehet két ugyanolyan
nevűcímű vevőd ebben a táblában, ami azért üzletileg nem feltétlenül elfogadható. azaz ha én lennék a megrendelő, ezt a megoldást nem fogadnám el.ja és szólj nyugodtan a tanárnak, hogy hibás az anyag (legalább látja, hogy foglalkoztál vele).
[ Szerkesztve ]
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
david199801
tag
Még egy kérdésem lenne hogy az sqldeveloper miért generálja le azt a sok táblát ott bal oldalt? Hogy tudnám azokat kitörölni?
-
updog
senior tag
válasz david199801 #4081 üzenetére
(#4079) doeeg második bekezdés. A SYSTEM user alá vagy bejelentkezve, ami nagyon nem jó. Nem azokat a táblákat kéne kitörölni ( tényleg szólj az oktatónak ha ő javasolta hogy ezzel lépjetek be), hanem saját user alatt kéne csinálni a játékot
De hogy segítsek is a konkrét kérdésnél: ha jobb gombbal kattintasz a Tables (filtered)-re, lesz egy Apply filter menüpont, klikk oda. Itt egyesével hozzá tudod adni, hogy milyen táblákat akarsz látni, praktikusan NAME = VEVŐ, NAME = KÖNYVEK stb. feltételeket állíts be (upper/lowercase-re lehet hogy figyelni kell (ha pl. egyikféleképp nem működik), az ékezet se túl szerencsés a táblanevekben), "Match any" beállítással. + gombbal tudsz hozzáadni. Így nem fog látszani, csak az a tábla, amit te akarsz.
De attól hogy nem látod, még ott lesznek, továbbra sem javasolt a SYSTEM alatt garázdálkodni
[ Szerkesztve ]
"Bocs, főnök, de én csak két emberben bízom. Az egyik én vagyok. Nem maga a másik." || "Hóhahó, mégis van graffaló!"
-
tm5
tag
válasz david199801 #4083 üzenetére
Hát így első blikkre szerintem nem egészséges, ha az eljárás paraméternevek megegyeznek az oszlopnevekkel. Valahogy különböztesd meg őket.
Bár ez valszeg nem hiba, de engem kiráz a hideg azoktól a magyar ékezetes táblanevektől.
-
Ispy
veterán
válasz david199801 #4083 üzenetére
Az upperben el van írva a vm_rendeles_id? Ottan alul ki is írja.
"Debugging is like being the detective in a crime movie where you're also the murderer."
-
kezdosql
tag
válasz Apollo17hu #4069 üzenetére
Csinálhatod azt is, hogy mindent, de mindent egyetlen táblában tárolsz.
Ez marhasag.
Ertelemszeru, hogy kulon tablakra van szukseg, a kerdes a koztuk levo kapcsolatok.
Minimalisan kell harom tabla, csapatok, szezon es meccsek.
A kerdes az, hogyan lehet kozottuk a kapcsolatokat felepiteni.Ertelemszeru, hogy adott szezonban vannak adott csapatok, de ez valtozhat - esemeny tortenik.
Ertelemszeru, hogy minden csapat minden mas csapattal jatszik - de nem mindig, itt is esemeny tortenik.
Ertelemszeru, hogy minden csapat egyszer otthon, egyszer idegenben jatszik - de nem mindig, itt is esemeny tortenik.A szezon az "x ev/x+1 ev" neven fut, allandoan valtozo kezdesi es befejezesi datumokkal, cask a sorszama biztos.
A meccsek minden szezonban vannak meghatarozva, mindig valtozo napokon, itt datum es ido mezo kell a
pontos beazonositasra.A korabbi javaslatod jo otlet volt, kell egy "szotar" segedtabla, amivel a fentiekhez meg lehet egy esemenyek mezot is felvinni, ahhoz is datum es ido kell, igy barmi tortenik a szezonban, jon egy esemeny, es kesobb annak alapjan lehet az elemzeseket megoldani es az esemenyeket "datum-ido" tipusu mezovel lehet kezelni.
.
Lehet, hogy az lesz a magoldast, hogy minden adathoz kell egy datum-ido mezot csatolni es az alapjan lehet megtalalni a rendezesi szempontokat a kesobbi elemzesekhez, de akkor meg kell oldani, hogy pl. az adott szezon az nem egy adat, hanem ketto, van kezdete es befejezese, mindketto datum-ido mezovel, es a szezon a kozottuk levo idosavra vonatkozik.Ez viszont nekem azt veti fel, hogy nem tudom a harom fenti tablat kozvetlenul osszekapcsolni, hanem valahogy mindig be kell iktatnom kozejuk ezt a "szotar" segedtablat, mert abban vannak a mindenhez kapcsolodo datum-ido mezok, ezzel akadtam el, tul sok a kapcsolat.
-
Ispy
veterán
válasz kezdosql #4086 üzenetére
A kerdes az, hogyan lehet kozottuk a kapcsolatokat felepiteni.
Nem kérdés, relációs adatbázis...
Dimenzió táblák:
- csapatok
- szezonok
- játékosok
- bírók
- tökömtudjamégmiTénytáblák:
- meccsekpl:
Csapatok tábla:
- név
- alapítás éve
- tulajdonos_id
- címadatok
stb.Szezonok tábla:
- szezonok_id
- megnevezés
- kezdete
-vegeMeccs tábla:
- meccs_id
- szezon_id
- dátum
- hazai_csapat_id
- vendeg_csapat_id
- mikor
- eredményAmikor le akarsz kérdezni, akkor ahol id van, ott bejoinolod a törzsadatokat:
SELECT
szezonok.megnevezes,
meccsek.datum,
hazai.nev,
vendeg.nev,
meccsek.mikor,
meccsek.eredmeny
FROM meccsek
inner join szezonok on meccsek.szezon_id=szezonok.id
inner join csapatok hazai on meccsek.hazai_csapat_id=hazai.id
inner join csapatok vendeg on meccsek.vendeg_csapat_id=vendeg.idkábé, ezt most csak összeírtam gyorsan, de így kell elképzelni.
"Debugging is like being the detective in a crime movie where you're also the murderer."
-
user112
senior tag
Sziasztok!
Az alábbi lekérdezéshez (Oracle) szeretnék hozzáadni egy számított mezőt (Hiba) :
Select azon, c1, c2,
(case when c2! =0 then c1/c2 end) as Arany, Hiba
...A Hiba mező attól függően változna hogy mekkora a c1 és az Arány értéke (több felzétel is lenne).
Pl. ha c1>10 and Arany>50 akkor kapjon valamilyen értéket.
... következő felfétel stb.Hogyan tudom ezt megcsinálni?
(nvl és raund is van a selectben de ezt nem írtam ide) -
Apollo17hu
őstag
válasz user112 #4089 üzenetére
Bele tudod agyazni az arany case when-jet egy masik case when-be. Vagy fogod a lekerdezesed, allekerdezesbe rakod, es ennek az allekerdezesenek az arany mezojere szinten tudsz hivatkozni.
Ha osztassal generalsz uj mezot, akkor tanacsos kivetelkezelest is alkalmazni a nullaval valo osztas hibalehetosegenek elkerulese erdekeben.
-
user112
senior tag
válasz Apollo17hu #4090 üzenetére
Sajna pont ez a beágyazás nem megy. Ott nem enged hivatkozni az Arany-ra (invalid identifer) .
(zéró osztás kezelva van) -
Apollo17hu
őstag
válasz user112 #4091 üzenetére
Ez a két módszer:
SELECT t.azon
,t.c1
,t.c2
,CASE
WHEN t.c2 ! = 0 THEN
t.c1 / t.c2
END AS arany
,CASE
WHEN t.c1 > 10 AND CASE
WHEN t.c2 ! = 0 THEN
t.c1 / t.c2
END > 50 THEN
'x'
END hiba
FROM (SELECT 'a' azon
,20 c1
,30 c2
FROM dual
UNION
SELECT 'b' azon
,20 c1
,0 c2
FROM dual
UNION
SELECT 'c' azon
,40 c1
,NULL c2
FROM dual
UNION
SELECT 'd' azon
,500 c1
,3 c2
FROM dual) tSELECT u.*
,CASE
WHEN u.c1 > 10 AND u.arany > 50 THEN
'x'
END hiba
FROM (SELECT t.azon
,t.c1
,t.c2
,CASE
WHEN t.c2 ! = 0 THEN
t.c1 / t.c2
END AS arany
FROM (SELECT 'a' azon
,20 c1
,30 c2
FROM dual
UNION
SELECT 'b' azon
,20 c1
,0 c2
FROM dual
UNION
SELECT 'c' azon
,40 c1
,NULL c2
FROM dual
UNION
SELECT 'd' azon
,500 c1
,3 c2
FROM dual) t) u -
kezdosql
tag
válasz Apollo17hu #4088 üzenetére
Erzelmi toltes nelkul irtam, tenyszeruen.
Adatbazis ertelemszeruen a sok tabla, minimum harmadik normal formaval.
Az "egytablas" megoldas a ket dimenzios tablazatot jelenti, aminek semi koze az adatbazishoz - legfeljebb adatforraskent. -
kezdosql
tag
Igen, hasonlora jutottam korabban en is, a biroknal kell egy ujabb segedtabla, mert csak a neveket lehet megadni, a meccsekkel egyutt van ertelmezve, hogy biro vagy partjelzo volt, a jatekosoknal is, hogy adott meccsen jatszott, kispadon ult vagy serult volt, stb.
Amin most tepelodok, amit Apollo irt, az esemenytabla, mert azt valahogy be kell illeszteni az elemzesbe, a szezonon beluli torteneseknel szakaszolni kell - pl. egyik csapat edzoje a masikhoz igazol, vagy amit korbban irtam, hogy december kozepen lecserelik a csatarsort es "uj csapat" jelenik meg.
-
user112
senior tag
válasz Apollo17hu #4092 üzenetére
Ebből leesett, hogy a CASE nem tartalmazhat aliast. Ha behelyettesítem a kifejezést, akkor már jó lett.
Ahány CASE, annyi Hiba mező lett, így végül is jó lett a lekérdezésem.
Köszönöm.
A belső Select-ben mit jelent az "a", 20,30 stb.? -
kezdosql
tag
válasz kezdosql #4094 üzenetére
Amin most tepelodok, amit Apollo irt, az esemenytabla, mert azt valahogy be kell illeszteni az elemzesbe, a szezonon beluli torteneseknel szakaszolni kell - pl. egyik csapat edzoje a masikhoz igazol, vagy amit korbban irtam, hogy december kozepen lecserelik a csatarsort es "uj csapat" jelenik meg.
Sehogyansenem jutok elobbre, mert egy esemeny tul sok mindent erint.
Elvileg jo lenne indulasnak:
Esemeny tabla
es_id
datum-ido
megnevezes
erintett - es itt bukok el, pl. 3 jatekos atigazol masik csapatba, minimum a 3 jatekost es a 2 csapatot erinti.Elvileg leszukithetek mindent "csapatok" es "szemelyek"-re, es a szemelyeknel van egy leosztas, hogy az illeto az adott idoszakban jatekos, edzo, biro, partjelzo, stb. de akkor is ket csoportom van, es azon belul is tobb erintett lehet.
Eddig jutottam:
Esemeny tabla
esemeny_id
datum-ido
megnevezes
csapat_id
szemely_idHa felveszek egy segedtablat, az megoldas lehet?
segedtabla
esemeny_id
csapat_id
szemely_idNagyon M : N -szeru, nehezen kezelheto megoldasnak tunik:-(
[ Szerkesztve ]
-
kezdosql
tag
válasz Apollo17hu #4095 üzenetére
Indoklassal, hogy miert minosited annak, informaciot adott volna.
Ismetlem, en nem erzelmi alapon irok, nem a szemely, hanem a tema es a megoldas az erdekes szamomra.
-
Jim74
nagyúr
válasz kezdosql #4097 üzenetére
Esetleg a játékosoknak, ha készítesz egy törzstáblát, hogy melyik, mettől meddig tartozik egy csapatboz az segítene?
Rekord_id
Jatekos_id
Jatekos_nev
Csapat_id
Tagsag_kezdete
Tagsag_vege (az aktuális csapatánál 9999.12.31)Ugyanezt elkészíteném a sérülések-re:
Rekord_id
Jatekos_id
Serules_kezdete
Serules_vege (ez mindaddig 9999.12.31., amíg sérült a játékos)
Új hozzászólás Aktív témák
- 1.250.000 FT helyett 940.000 FT !! MacBook Pro 16" M3 Pro 12CPU / 18GPU / 18GB / 512 SSD
- RTX 2080TI ROG STRIX GAMER PC
- AKCIÓ !! M3 Chip - MacBook Pro 14" 8C CPU / 10C GPU / 8 GB/ 1 TB / Bontatlan / Magyar
- Tidradio td-h3 akkumulátor
- HP ZBook Studio x360:i7 9850H,32GB,512GB,P2000,15.6" UHD 3840x2160 TOUCH 600nit 100%AdobeRGB,HP gari