Új hozzászólás Aktív témák
-
Lortech
addikt
-
Lortech
addikt
Ha nem írtad volna félreérthetően.. : azokat listázza ki, akik ezen felül szerepelnek
Pici tipp: a hosszú táblaneveket én el szoktam eljelölni, pl.
SELECT ux.* FROM e107_user_extended ux
LEFT JOIN e107_user u ON ux.user_extended_id = u.user_id és így tovább.Thank you to god for making me an atheist
-
Lortech
addikt
válasz
EEdem_Dtx #293 üzenetére
Nem tudok más megoldást sajna.
imibogyo:
Leegyszerűsített séma az alapkoncepció megértéséhez:
konyv (id, cim, szerzo_id, mufaj_id)
szerzo(id, nev)
mufaj(id, nev)konyv tábla egy sora:
1,Közöny,1,1
2,Bukás,1,1szerzo tábla egy sora:
1,Albert Camusmufaj tábla egy sora:
1, regenyHa a lekérdezésben összekapcsolod a táblákat úgy, hogy:
select k.cim, sz.nev, m.nev from konyv k
join szerzo sz on k.szerzo_id = sz.id
join mufaj m on k.mufaj_id = m.id
- akkor megkapod eredménynek, hogy:
Közöny, Albert Camus, regény
Bukás, Albert Camus, regényA címet és nevet nem érdemes szétbontani értelemszerűen, mivel ez egyedi. Kiadás évét sincs sok értelme külön kategóriára bontani szvsz.
De pl. a kiadót érdemes.[ Szerkesztve ]
Thank you to god for making me an atheist
-
Lortech
addikt
válasz
imibogyo #296 üzenetére
Ja még egy kérdés, ezt a JOIN dolgot csak lekérdezésnél lehet megcsinálni ?? nem tudom összekapcsolni őket alapból, mint pl. Accesben ???
Mi másnál akarod megcsinálni? Az sql és az access két külön fogalom.A k, sz, m a könyv, szerző és műfaj rövidítése. Amint látod, ott van, hogy konyv k, így k-val tudsz hivatkozni a könyvre, nem csak ezután, hanem előtte is, pl a select k.cim.
SELECT k__onyv.cim, i__ro.iro, m__ufaj.mufaj FROM k__onyv k JOIN i__ro i ON k__onyv.iro_id=iro_id JOIN m__ufaj m ON k__onyv.mufaj_id=mufaj_id;
Persze, hogy nem jó, mivel a "k__onyv.iro_id=iro_id" résznél nem adod meg, hogy az iro_id melyik táblához tartozik. Tehát k__onyv.iro_id=i__ro.iro_id, és a műfajnál is ez.Thank you to god for making me an atheist
-
Lortech
addikt
válasz
imibogyo #301 üzenetére
Nem, akkor üres halmazt kapsz vissza. Szintaktikai hibát nem okozhat.
Biztos kell neked ez a select? Az első hozzászólásban csak a táblasémát írtad, mint feladat. A selectet csak szemléltetésképpen írtam.
Ha adsz valami publikus logint a szerveredhez, akkor esetleg be tudom rajta üzemelni.
Thank you to god for making me an atheist
-
Lortech
addikt
Minden valamirevaló sql szerver tud alapból növekményes backupot. Nem kell kézzel szüttyögni.
szerk: példát kivettem, mert nem jó.
imibogyo:
Egyébként amit kértél, az a felhasználó nevem, meg a jelszóm ???? Mondom láma vagyok...Nem a te jelszavadat, hanem egy olyan account jelszavát, amivel be tudok lépni a szerveredbe, és ki tudom próbálni.
[ Szerkesztve ]
Thank you to god for making me an atheist
-
Lortech
addikt
Mennie kéne ránézésre, nem látom a problémát. Tesztelni nem tudom. Tüneti kezelésnek nem jó a to_date függvény neked (megadod a dátumot olyan formában ahogy van, aztán a dátum formátumsztringet hozzáigazítod )? Nem tudom mi a cél, csak zavar-e, vagy komoly problémát okoz valami miatt.
Thank you to god for making me an atheist
-
Lortech
addikt
Biztos nem az oracle a hülye, valami oka kell hogy legyen, csak nem jösz/jövünk rá.
Az az "sql commands" és hogy az "elfogadja" a parancsot, mit takar?
Alter session-re van jogod? Lehet, hogy lefut a parancs, szintaktikailag helyes volt, csak épp nem történt semmi, mert nincs jogosultságod például.select value from NLS_SESSION_PARAMETERS where parameter = 'NLS_DATE_FORMAT'
Ez a lekérdezés dobja, amit beállítottál?Thank you to god for making me an atheist
-
Lortech
addikt
De nyilván meg lehet ezt is csinálni, csak kérdés, hogy megéri-e (milyen gyakran kell mailt küldeni, milyen sűrűn változik a mail adatbázis). Szerintem a legegyszerűbb még mindig az, hogy php-val csinálod a kapcsolódásokat minden adatbázishoz külön (vagy csak select_db, ha azonos a szerver) és összefésülöd az adatokat egybe.
Thank you to god for making me an atheist
-
Lortech
addikt
válasz
sirius_01 #394 üzenetére
select * from masodik where azon in (select d.a from (select count(*) c, azon a from masodik where ik in (1,2) group by azon) d where d.c >= 2)
?
Viszont a 12 -höz három sor tartozik, nem kettő, vagy valami nem tiszta. Kéne lennie jobbnak, de most nem jut eszembe. Mindenesetre általánosan elmondhatom eddigi tapasztalataim alapján, hogyha ilyen csúnya lekérdezést kell írni, akkor általában a séma nem megfelelő.Thank you to god for making me an atheist
-
Lortech
addikt
válasz
sirius_01 #396 üzenetére
Pont azt adja vissza a lekérdezés, amit leírtál most, tehát:
10 --- 1
10 --- 2
10 --- 3
12 --- 1
12 --- 2
12 --- 4A lekérdezést pedig nyilván paraméterezned kell mindig az igényednek megfelelően, tehát ha 1,4 kell, akkor (1,4).
szerk: Illetve a (>=)2 helyett megadott halmaz elemszámát kell megadni.[ Szerkesztve ]
Thank you to god for making me an atheist
-
Lortech
addikt
válasz
sirius_01 #398 üzenetére
Erre nehéz lenne válaszolni, mert nem tudom neked mennyi a nagyon vagy a kicsit, illetve milyen erős gépen fog futni, és mekkora az az adatbázis. Ezres / százezres nagyságrendig nem vészes (ex-has mondom), milliósnál már érdemes lenne jobban megvizsgálni a kérdést. De leginkább teszteld le és nézd meg, hogy mennyi idő alatt futott le a query.
Thank you to god for making me an atheist
-
Lortech
addikt
válasz
mérienn23 #521 üzenetére
1,
select count(*) elso_valasz from
(select nev, count(allat) kutyak_szama from tabla where allat = 'kutya' group by nev) kutyak join
(select nev, count(allat) allatok_szama from tabla group by nev) allatok on kutyak.nev = allatok.nev
where allatok_szama = kutyak_szama2,
select count(*) masodik_valasz from
(select nev, count(allat) kutyak_szama from tabla where allat = 'cica' group by nev) kutyak join
(select nev, count(allat) allatok_szama from tabla group by nev) allatok on kutyak.nev = allatok.nev
where allatok_szama = kutyak_szama3,
select count(*) harmadik_valasz from
(select nev, count(allat) kutyak_szama from tabla where allat = 'papagáj' group by nev) kutyak join
(select nev, count(allat) allatok_szama from tabla group by nev) allatok on kutyak.nev = allatok.nev
where allatok_szama = kutyak_szama4, select count(*) negyedik_valasz from (select distinct nev from tabla where nev in (select nev from tabla where allat = 'cica') and allat = 'kutya')
5, select count(*) otodik_valasz from (select distinct nev from tabla where nev in (select nev from tabla where allat = 'cica') and allat = 'papagáj')
6, select count(*) hatodik_valasz from (select distinct nev from tabla where nev in (select nev from tabla where allat = 'kutya') and allat = 'papagáj')
7, select count(*) from (select distinct nev from tabla where nev in (select nev from tabla where nev in (select nev from tabla where allat = 'cica') and allat = 'kutya') and allat = 'papagáj')
höhö, 3 sör után,
ja és sok sikert a tanárodnak.[ Szerkesztve ]
Thank you to god for making me an atheist
-
Lortech
addikt
válasz
mérienn23 #525 üzenetére
csak kutya és cica:
select count(distinct nev) from tabla where
nev in (select distinct nev from tabla where nev in
(select distinct nev from tabla where allat = 'kutya') and allat = 'cica') and nev not in (select distinct nev from tabla where allat not in ('kutya','cica'))a többi esetet rádbízom.
[ Szerkesztve ]
Thank you to god for making me an atheist
-
Lortech
addikt
Mysql vs. Access azért nem egy Mysql vs. Oracle.
Ha egyszerű queryket írtál, akkor sok különbség nem lesz, sima felhasználói oldalról. Ha már függvényeket, különféle típusokat használsz, vagy adminisztrálsz, esetleg programozol benne, akkor már rengeteg különbség van.
Ha select * from tábla lekérdezéstől komolyabb dolgokat csinálsz, akkor könnyen előfordulhatnak különbségek, példaként kezdőknél a dátum kezelés szokott problémát jelenteni először.
OracleXE teljesen jó tanulókörnyezetnek, kattintgatós telepítővel létrehoz neked automatikusan egy saját szerver példányt, és van webes felülete is, amin queryket is gyakorolhatsz (alap konzol sqlplus mellett).[ Szerkesztve ]
Thank you to god for making me an atheist
-
Lortech
addikt
1, Ha "olvasott" egyetlen egy adott rekord, amely valamely kritérium alapján egyértelműen azonosítható (van kulcs),
...vagy...
2, Ha olvasott bármelyik rekord a táblában, amelyben tetszőlegesen sok sor van ?Felteszem 2) a válasz.
1) esetben audittal meg lehetne csinálni, hogy konkrétan a sorra selectkor lefusson egy eljárás, ami updateli a másik táblát.
Végülis tetszőleges(en sok) sorra is beállítható audit, de minden sorra külön kéne 1 audit (triggerrel létre lehetne hozni az auditot is). Működhet, csak nem erre való.Ha ilyesmi követelmény van, akkor azt programlogikából szokás megoldani, nem izomból.
Thank you to god for making me an atheist
-
Lortech
addikt
Ezt fejtsd már ki, mert két 10+ év tapasztalattal rendelkező Oracle DBA-t kérdeztem meg házon belül, és nem jutott eszükbe más megoldás.
Viewra instead of triggert akkor raksz, ha update-elni akarod a viewt, de nem tudom, hogy jön ide. Továbbra is update, insert, delete triggerelhet instead of esetén is, select statementet mivel fogod triggerelni ?
[ Szerkesztve ]
Thank you to god for making me an atheist
-
Lortech
addikt
A PostgreSQL nem kistestvére Oracle-nek (mint ahogy nem az a DB2 se, meg az MSSQL se); a PL/pgSQL hasonló technológia ugyan mint a Oracle PL/SQL, de közel sem ugyanaz; az Oracle meg sose tudta azt, amiről szó volt. Én tudom, mert én meg bevallom nap mint nap előtte ülök, mivel Oracle termékeket (tovább)fejlesztek, integrálok, javítok.
[ Szerkesztve ]
Thank you to god for making me an atheist
-
Lortech
addikt
Olvasd vissza, nem arról volt szó, hogy a DB2 vagy MSSQL a rokona Oracle PL/SQL-nek, hanem amit te írtál, hogy a PostgreSQL (ez az RDBMS neve ugyanis) kistestvére az Oracle-nek, én erre reagáltam, és nem azt, amit most nekem tulajdonítasz.
Az idézet pont annyit mond, amit én is mondtam, hogy hasonló a két nyelv. (Oracle PL/SQL és PostgreSQL PL/pgSQL, viszont te azt írtad, idézem: "mindkettő "PLSQL", és ebből érvet is formáltál, hogyha egyik tudja valamit, akkor azt a másiknak is tudnia kéne, holott szintaktikai hasonlóságon, és az sql szabványokból következő hasonló elnevezéseken, funkciókon kívül nincs közük egymáshoz, nincs közös kódbázis, fejlesztő. Olyasmi a kapcsolatuk, mint a Javanak és a .NET-nek.
Thank you to god for making me an atheist
-
Lortech
addikt
válasz
WonderCSabo #691 üzenetére
NO_DATA_FOUND exception keletkezik, ha a select into statement nem hoz eredményt, ezt a kivételt lekezelve megkapod az else ágat.
EXISTS utasítás nincs ora plsql-ben.
Where záradékban használhatod ha a megoldásodnál maradsz, én inkább alábbit ajánlom....
temp integer;
...
select count(*) into temp from ? where ? and rownum = 1;
if temp = 1 then
--?
else
--?
end if;
...szerk: na látom ide lyukadtál ki magadtól is.
[ Szerkesztve ]
Thank you to god for making me an atheist
-
Lortech
addikt
to_char mit dob erre, ha kiíratod vele a sysdate-et:
to_char(sysdate,'DD-MON-YYYY')Vagy kérdezhetném azt is, hogy mi az nls_lang:
select DECODE(parameter, 'NLS_CHARACTERSET', 'CHARACTER SET',
'NLS_LANGUAGE', 'LANGUAGE',
'NLS_TERRITORY', 'TERRITORY') name,
value from v$nls_parameters
WHERE parameter IN ( 'NLS_CHARACTERSET', 'NLS_LANGUAGE', 'NLS_TERRITORY')Thank you to god for making me an atheist
-
-
Lortech
addikt
A lekérdezés eredményének egyik mezője? Egyik, mint tetszőleges mezője vagy egyik, mint 1 adott mezője.
A lekérdezés eredményén (kurzor) végiggyalogolsz egy ciklussal, és a megfelelő mező(ke)t megvizsgálod instr függvénnyel.
Hatékonyabb lenne, ha eleve az sql tartalmazza a vizsgálatot a where-ben a like klózzal.
Nem tudom, hogy ezzel segítettem-e, mert 38 féleképpen lehet értelmezni a mondatodat, pontosítás kéne pont bemenet és elvárt végeredmény tekintetében.Thank you to god for making me an atheist
-
Lortech
addikt
Ha 1 - több kapcsolat van a két tábla között, akkor a kapcsoláshoz nem kell több.
A child/detail táblában felveheted még foreign keynek a mezőt, tudsz constraintet is definiálni hozzá, amely megakadályozza, hogy a child táblában létrejöjjön rekord megfelelő parent/detail nélkül, illetve meghatározhatod, hogy mi történjen, ha a parent táblában módosul vagy törlődik az adott kulcsú rekord. Storage engine-től függ, hogy támogatja-e az FK-t, InnoDB támogatja csak.Thank you to god for making me an atheist
-
Lortech
addikt
válasz
lakisoft #1550 üzenetére
Örökös vita a tárolt eljárás használata vagy nem használata.
Én egyik mellett sem kardoskodnék, mert ezer + 1 körülménytől függ, hogy adott fejlesztésben / ellenjavalt, érdemes / kell használni tárolt eljárásokat.
Csak egy a számtalan, neten fellelhető cikkből, threadből, ahol ez a téma: [link]
Szinte minden érvre lehet ellenérvet találni ebben a témakörben. Szerintem az a fontos, hogy jól ismerjük a lehetőséges megoldásokat, ezek előnyeit, hátrányait, így lehet jó döntéseket hozni a tervezés, implementáció során.Thank you to god for making me an atheist
-
Lortech
addikt
válasz
alratar #1686 üzenetére
Nem tudom pontosan mire kell, de ha csak kell egy folytonos sorszám az id alapján rendezve, akkor csinálhatsz egy ilyen viewt neki (ez Oracle-ben).
create view testv as select rank() over(order by id asc) id, nev from testt
[ Szerkesztve ]
Thank you to god for making me an atheist
-
Lortech
addikt
válasz
alratar #1692 üzenetére
Na és akkor mi lesz, ha már a tényleges, aktív játékosállomány is meghaladja ezt a tartományt, miután megcsináltad ezt a léptetgetést ?
Komolyra fordítva, az id-ket nem módosítgatjuk, főleg nem ilyen ürüggyel. Megfelelően nagy típust kell választani kulcsnak, amelybe belefér minden tervezett adat + ráhagyás.
Thank you to god for making me an atheist
-
Lortech
addikt
válasz
pittbaba #1699 üzenetére
A NULL speciális érték, pl. Oracle-ben nullt bármihez hasonlítod = / != -vel, egyaránt unknown eredményt ad. Null helyett érdemes lehet egy speciális, nullt szimbolizáló értéket adni a mezőnek, vagy ha az nem opció, akkor mindig IS NULL / IS NOT NULL-lal (is) vizsgálni.
Thank you to god for making me an atheist
-
Lortech
addikt
válasz
kw3v865 #4377 üzenetére
'INSERT INTO '||$1||'.table (azonosito, nev) SELECT '||id||','||name;
>>
kiértékelés után: INSERT INTO abc.table (azonosito, nev) SELECT id_erteke, name_erteke;
Hiányzik tehát id és name változó értékei körül az aposztróf, különben azt hiszi, hogy nem egy literál, hanem egy oszlop, azért nem találja. (az id azért oké, mert number típus gondolom)
Aposztróf escape-eléséhez duplázni kell.[ Szerkesztve ]
Thank you to god for making me an atheist
-
Lortech
addikt
válasz
kw3v865 #4380 üzenetére
Mert a formatos megoldásod dollar quotingot használ, ami a jobban olvasható, biztosabb, egyszóval a javasolt megoldás.
Ha visszamegyünk az eredeti statikus, működő insert statementedhez:
INSERT INTO tesztsema.table (azonosito, nev) SELECT 2332,'xyz';
Az volt a cél, hogy ezt a stringet dinamikusan előállítsd, és átadd az EXECUTE statementnek.
Azt pedig úgy tudod megtenni, hogy aposztrófokat is odateszed a példában az xyz köré.
A '||name csak annyit csinál, hogy a name értékét hozzáfűzi a stringhez, de aposztrófok ettől még nem lesznek körülötte, és text típusnál ez szükséges. Szóval, vagy te fűzöd oda (nem javasolt, csak a probléma megértéséért említettem az előző hozzászólásomban), vagy dollar quotingot vagy quote_literal() / quote_ident() fgv-t használsz.Másikhoz. Ilyen szerkezet nincs, hogy IF EXECUTE
Olyan tudsz csinálni, hogy
EXECUTE STATEMENT into VAR és a VAR értékét vizsgálod IF-fel.[ Szerkesztve ]
Thank you to god for making me an atheist
Új hozzászólás Aktív témák
- Peugeot, Citroën topik
- Rowon: AXAGON EE35-GTR 3.5 külső merevlemez ház bemutatás
- Kerékpárosok, bringások ide!
- Elektromos rásegítésű kerékpárok
- Mibe tegyem a megtakarításaimat?
- Kertészet, mezőgazdaság topik
- Azonnali fáradt gőzös kérdések órája
- Diablo IV
- Redmi Note 12 Pro - nem tolták túl
- Bezár az Anandtech
- További aktív témák...
- Philips Evnia 49M2C8900 (49", OLED, 5120x1440, 240Hz, 10bit, Ívelt 1800R, 0,03ms) Új, Bontatlan!
- Laptopok, Pc-k professzionális karbantartása, tisztítása.
- FRISS LISTA!!!! SPÓRÓLJ SZÁZEZREKET! Új bontatlan gamerlaptopok I5/7/9 R7 Rtx 4060-70
- Quad head TV Box - felvevő/streamer
- Samsung Galaxy Tab S7 (SM-T875) 128Gb WiFi/5G gyári billentyűzettel
Állásajánlatok
Cég: Ozeki Kft
Város: Debrecen
Cég: Ozeki Kft
Város: Debrecen