Új hozzászólás Aktív témák
-
nagyúr
válasz kw3v865 #3900 üzenetére
hogy mi lesz gyorsabb, azt neked kell kimérned. táblától, és hardvertől függően változhat.
alternatívák vannak,select id from table order by id desc limit 1;
select currval(pg_get_serial_sequence('tábla', 'id'));
stb.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.
-
válasz kw3v865 #3900 üzenetére
ha postgresql-hez kötött megoldás is megfelel, akkor:
where id = (select last_value from table_id_seq);
ezzel a lekérdezéssel bármikor le tudod kérdezni a legutolsó id-t. de ez nem szép.
ha az adott sessionben raktad bele a sort, akkor egy fokkal rendesebben néz ki:
where id = (select currval('table_id_seq'));
vagy, szerintem a legjobb megoldás, kérdezd le, hogy milyen értéket szúrt be az insert, ha ez megoldható:
insert blablab returning id;
ezt akkor tudod használni, ha az insertet akkor csinálod, amikor az id-je is kell.
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
user112
senior tag
Sziasztok!
Egy Oracle táblában Kod, Tipus, Érték mezők vannak.
A Tipus "A" és "B" érték vehet fel.
Hogyan tudom az A és B értékét egy sorba összesiteni?
Kod, AÉrtéke, BÉrtéke.
Esetleg a kettő összege lehetne a 4. oszlop.
Köszönöm.[ Szerkesztve ]
-
bpx
őstag
válasz user112 #3904 üzenetére
Erre szoktunk PIVOT-ot használni, de egy ilyen egyszerű esetben a "lábbal hajtós" megoldás is elfogadható, pl.:
select
kod,
min(Aerteke) as Aerteke,
min(Berteke) as Berteke
from
(
select
kod,
case when tipus = 'A' then ertek end as Aerteke,
case when tipus = 'B' then ertek end as Berteke
from
tabla
) group by kod; -
bpx
őstag
válasz user112 #3906 üzenetére
Lehet a MIN helyett SUM, de ebben az esetben nincs jelentősége, hogy melyik, mert csoportonként csak 1 sorban lesz érték, a GROUP BY miatt viszont muszáj valamilyen aggregate functiont használni.
Az összeget bele lehet rakni új oszlopként, simán csak pl.:
min(Aerteke) + min(Berteke) as osszeg
Vagy akár:
select
kod,
min(Aerteke) as Aerteke,
min(Berteke) as Berteke,
sum(ertek) as osszeg
from
(
select
kod,
ertek,
case when tipus = 'A' then ertek end as Aerteke,
case when tipus = 'B' then ertek end as Berteke
from
tabla
) group by kod;[ Szerkesztve ]
-
Pé
senior tag
Sziasztok, kis segítséget szertnék kérni.
Van egy adatbázisom amelybe több helyről, minden helyről több gép küld státuszjelentést percenként. Ebből az adatból szeretnék napi rendelkezésre állást számolni.
Eljutottam eddig :SELECT date(date), service, usergroup, customer, count( * ) as napi FROM database.Availability WHERE status='Up' and service = 'HTTP' AND usergroup = 'EMEA' AND customer = 'Customer1' GROUP BY usergroup,server, date(date)
Ebből kapok egy ilyet :
date(date) service usergroup customer napi
2018-10-31 HTTP EMEA Customer1 1395
2018-11-01 HTTP EMEA Customer1 1401
2018-11-02 HTTP EMEA Customer1 1440
2018-11-03 HTTP EMEA Customer1 1413
2018-11-04 HTTP EMEA Customer1 1398
2018-11-05 HTTP EMEA Customer1 1381
2018-11-06 HTTP EMEA Customer1 1345Nekem viszont kéne egy 6. oszlop is, ami az 5. oszlop / 14,4 érték, ami megadja %-ban- hogy mennyi volt a rendelkezésre állás. Ezt sehogy sem tudtam belehegeszteni. A segítséget előre is köszönöm.
(ja, mysql-ben csinálnám)
[ Szerkesztve ]
-
tm5
tag
Kb. ennyinek kéne lennie:
SELECT datum, service, usergroup, customer, napi/14.4
FROM
(
SELECT date(date) datum, service, usergroup, customer, count( * ) as napi FROM database.Availability
WHERE status='Up' and service = 'HTTP' AND usergroup = 'EMEA' AND customer = 'Customer1' GROUP BY
usergroup,server, date(date)
) -
zozokaa
csendes tag
Hali, kellene 1 kis segítség, egy alkalmazást csinálok beadandó feladatnak suliba és nem nagyon tudom hogy milyen táblákat kéne csináljak és melyiket melyikkel kapcsoljam össze.
Egy filmes alkalmazás lenne ahol van 1 felhasználó aki tud filmeket értékelni, kedvencekbe rakni, kommentelni alá stb. Laravellel+mysqlel írom
-
Jim74
nagyúr
Sziasztok,
Ki kellene exportálnom egy lekérdezés eredményét txt-be, vagy csv-be. A copy - paste megoldás nem jó, mert a select végeredménye kb. 6 millió rekord. Ja, és ezt úgy kellene megtenni, hogy a fejlécek is benne legyenek az exportált állományban.
Előre is köszönöm segítséget
-
-
Ispy
veterán
válasz Peter Kiss #3918 üzenetére
Azért az SSMS-sel óvatosan, nekem már többször előferdült, hogy összefosta magát nagy adatmennyiségnél, igaz lehet csak a memóriát zabálta fel és azért.
Ezt is érdemes megnézni: OPENROWSET
[ Szerkesztve ]
"Debugging is like being the detective in a crime movie where you're also the murderer."
-
Jim74
nagyúr
Köszönöm Olvasgatok...
Aztán, ha nagyon nem megy, akkor a könyvvizsgálók megkapják a 6 milló rekordos adatbázisukat fejléc nélkül Majd mailben megírom nekik, hogy melyik oszlopnak mi a fejléce. Így is szétsz*ptam az agyam, mire SAP-ból legyűjtöttem az adatokat...[ Szerkesztve ]
-
Fecogame
veterán
MariaDB-ben az alábbit meg lehet valósítani úgy, hogy ugyanazon szerveren vannak az adatbázisok?
A cél az lenne, hogy ne egy nagy DB-m legyen, hanem több, kisebb.
Ha igen, pontosan mi a megoldásnak a neve, ami alapján tovább tudok haladni?
Lassú a mobilinterneted? 4G/LTE antennák, közvetlenül raktárról ---> http://bit.ly/LTE_Antennak
-
Jim74
nagyúr
Közben megcsináltam "favágó" módszerrel
A selectet lefuttattam top 1-re, azt kimásoltam fejléccel Excelbe. Kitöröltem az egy adatot tartalmazó sort, hogy csak a fejléc maradjon, majd elmentettem csv-be.
Utána lefuttattam a teljes select-et, azt exportáltam fejléc nélkül csv-be, utána parancssorból össze copyztam a két csv file-t.Tudom, hogy nem elegáns, de most ez volt a leggyorsabb.
-
-
-
soldi3r
veterán
Szevasztok!
Kicsit beleasnam magam az SQL rejtelmeibe. Tudtok ajanlani valami konyvet hozza? Amiket hirtelen talaltam, azok eleg regiek.
Nem tervezek fejleszto lenni, csak egy ket dolgot megerteni MS es Oracle rendszerekben.E30 (oo=[][]=oo)
-
updog
senior tag
válasz soldi3r #3927 üzenetére
Az Oracle-nek teljesen jól használható dokumentációja van, ha nem ragaszkodsz a könyvekhez
"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
-
soldi3r
veterán
Koszi! Megnezem ezeket.
E30 (oo=[][]=oo)
-
axxiion
csendes tag
Sziasztok, az alábbi 3 feladathoz szeretnék segítséget kérni:
séma:
https://arato.inf.unideb.hu/kadek.tamas/zh18.pngkérdések:
1.Egyetlen INSERT utasításban rögzítsen két egyforma tételt két különböző számlaszámhoz.
2.Készítsen olyan lekérdezést (SELECT utasítást), amely ellenőrzi, hogy folyamatosan kerültek-e kiosztásra a számlaszámok
3.Készítsen olyan lekérdezést, amely szállítóként és vevőként összesíti a forintban kifizetett forgalmat. A lekérdezés eredménye tartalmazza a szállító nevét, a vevő nevét és az összesített forgalmat (a számlák végösszegét).
Valamint esetleg még erre:
Készítsen egy új táblát, amelynek rekordjai külső kulcs megszorítás segítségével hivatkozzák a zh18_szamla_tetel tábla egy-egy rekordját.
Ha esetleg valaki valami irányt tudna mondani, hogy hol tudnék hasonló feladatok megoldását megnézni az nagyon jó lenne.
Előre is köszönöm.
-
Ispy
veterán
válasz axxiion #3933 üzenetére
.Ezt most csak gyorsba, ez visszaadja azokat a számlákat, amik előtt nem volt sorszám kiadva:
-- DROP TABLE #T
CREATE TABLE #T (ID INT)
INSERT INTO #T (ID) VALUES(1)
INSERT INTO #T (ID) VALUES(2)
INSERT INTO #T (ID) VALUES(4)
INSERT INTO #T (ID) VALUES(5)
INSERT INTO #T (ID) VALUES(6)
INSERT INTO #T (ID) VALUES(7)
INSERT INTO #T (ID) VALUES(11)
INSERT INTO #T (ID) VALUES(12)
SELECT #T.ID
FROM #T
LEFT JOIN #T T2 ON #T.ID=T2.ID+1
WHERE T2.ID IS NULLA kódot írd át a saját adatbázisodra, a lényeg, hogy az ellenőrzendő sorszámot egyel megnövelve saját magához kötöd, ahol nincsen kapcsolat, ott luk van.
"Debugging is like being the detective in a crime movie where you're also the murderer."
-
mr.nagy
tag
Sziasztok!
MSSQL-ben kellene azt megoldani, hogy a mai dátumhoz adjon hozzá x napot (pl. 8 nap), majd ehhez a dátumhoz képest az első péntek dátumát adja vissza. Tehát ma + 8 nap az 2018-12-16, de ez vasárnap, nekem pedig a 2018-12-21.-i péntek dátumára lenne szükségem.
Az elsörész ok:
select (getdate() + 8)
, de innen hogyan tovább azt nem tudom!Előre is köszönöm, annak aki tud segíteni!
HMNote10Pro
-
Jim74
nagyúr
válasz mr.nagy #3935 üzenetére
Azt hiszem a weekday utasítás adja meg egy adott nap hányadik a héten.Ez alapján meg lehet képlettel hatarozni a következő pénteket. Azt hiszem a vasárnap az 1 alap sql beállításban, de nem vagyok benne biztos. Telefonról vagyok, ha nem megy, akkor este jobban utána tudok nézni.
-
Magnézium
kezdő
Sziasztok!
Letöltöttem és telepítettem két programot:
MySQL Community Server (csak a Servert választottam ki telepítésre)
MySQL Query broswer 1.1.20Hiába csinálok a MySQL 8.0 Command Line Client parancssoros ablakban adatbázisokat, táblázatokat, a Query Broswerben nem jelenik a Schemata ablakban. Brosweren keresztül is csináltam sémát, táblát, az sem jelenik meg, de a Line Clientben viszont igen.
Tudna valaki segíteni?
Köszönöm!
M. -
Zalanius
tag
válasz mr.nagy #3935 üzenetére
Az ilyen "rákövetkező hét x. nap" stb. elég mókolós tud lenni, ezért ha nem megy egyből kisujjból, célszerű felírni néhány segédváltozót, azzal elbabrálni, tesztelgetni. Két példa lent:
-- 1. Olvasmányosan
DECLARE @bazisnap date = SYSDATETIME();
DECLARE @napdelta int = 8; -- adjunk hozzá x napot
DECLARE @celnap int = 6; -- a következő pénteket keressük, a péntek sorszáma 6, ez a skála 1-7 közötti
DECLARE @eredmeny date;
-- 8 nap múlva milyen nap lesz?
DECLARE @x1 int = (SELECT DATEPART(dw, DATEADD(day, @napdelta, @bazisnap)));
-- Adjuk az deltához a még hiányzó napokat, két eset lehetséges
IF @x1 > @celnap SET @napdelta = @napdelta + 7 - (@x1 - @celnap); ELSE SET @napdelta = @napdelta + @celnap - @x1;
SET @eredmeny = DATEADD(day, @napdelta, @bazisnap);
-- Ellenőrizhető az összes részszámítás is, ha kell
SELECT @eredmeny, @napdelta, @x1;
-- 2. Kevésbé olvasmányosan
SELECT CASE WHEN DATEPART(dw, DATEADD(day, 8, SYSDATETIME())) <= 6 THEN CONVERT(date, DATEADD(day, 8 + 6 - DATEPART(dw, DATEADD(day, 8, SYSDATETIME())), SYSDATETIME()))
ELSE CONVERT(date, DATEADD(day, 8 + 7 - (DATEPART(dw, DATEADD(day, 8, SYSDATETIME())) - 6), SYSDATETIME()))
END;--= Zalán =--
-
Jim74
nagyúr
válasz mr.nagy #3935 üzenetére
Remélem jó lesz, amit összeraktam .
A lényeg, ha a +8 nap dátum péntekre vagy előbbre esik, akkor 5-től annyival kevesebb napot kell hozzáadni a + 8 napos dátumhoz, ahányadik nap a héten a + 8 napos dátum.
Ha péntek után esik a +8 nap, akkor 12-től (5 + 7, azaz péntek + 1 hét) annyival kevesebb napot kell hozzáadni a + 8 napos dátumhoz ahányadik nap a héten a + 8 napos dátum.Remélem sikerült érthetően fogalmaznom, így jó pár pohár bor után . Mindenféleképpen próbáld ki pár napon, hogy jól számol-e
Igazából az első set date-s sor és az utolsó iif-esre van szükséged, a többi csak az átláthatóság kedvéért hagytam benne.
set DATEFIRST 1 -- ezzel beállítod, hogy a hétfő legyen a hét első napja, mert alap esetben, ha jól tudom, akkor a vasárnap az 1. Én jobban szeretem, ha a hétfő az 1.
select cast(getdate()as date) as "Mai nap dátum"
,datepart(weekday,getdate()) as "Mai nap sorszáma a héten"
,cast(getdate()+8 as date) as "Mai nap + 8 nap dátum"
,datepart(weekday,getdate()+8) as "Mai nap + 8 nap sorszám a héten"
,iif(datepart(weekday,getdate()+8)<=5,cast(getdate()+8+(5-datepart(weekday,getdate()+8)) as date),cast(getdate()+8+(12-datepart(weekday,getdate()+8))as date))[ Szerkesztve ]
-
válasz mr.nagy #3935 üzenetére
bocs, mssql-hez nem értek. postgresben úgy csinálnám, hogy van generate_series függvény, ami halmazt ad vissza. az egyik lehetőség: ezt
select now()+generate_series(0,7)*'1 day'::interval;
berakod egy subselectbe, és kiválasztod azt, ahol a hét napja az, amit szeretnél.Ha az mssql is tudja, amit a postgres, hogy sorozat timestamp is lehet, akkor egyszerűbb a dolog:
select generate_series(now(),now()+'7 days'::interval,'1 day');
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
mr.nagy
tag
Sziasztok,
Köszönöm a válaszokat! Ma nem leszek pc közelébe de holnap kipróbálom mindegyik megoldást.
HMNote10Pro
-
soldi3r
veterán
Megneztem a linkelt treningeket. Nagyjabol vegig ertem rajtuk. Nekem tokeletes. Neznek egy gyakorlos adatbazist.
Latom, hogy van olyan Oracle DB XE, ami ingyenesnek tunik. Milyen oprendszert erdemes alatenni? Az Oracle sajatjat, vagy inkabb egy Fedorat?E30 (oo=[][]=oo)
-
bpx
őstag
válasz soldi3r #3943 üzenetére
Szerintem otthonra, 1 felhasználós környezetbe, tanulási célra, tök felesleges az XE, amikor erre a célra az Enterprise Editiont is bárki letöltheti az Oracle publikus oldaláról, és nincsenek benne XE szintű korlátozások, és ugyanúgy egy darab RPM-ből telepíthető. Az EE .rpm 3,3 GB, az XE .rpm meg 2,5 GB, tehát hiába Express Edition, az is egy jó nagy monstrum.
OS-ből ha Linux, akkor Oracle Linux (ingyenes, csak a support fizetős), RHEL (van ingyen licenc 1 accounthoz 1 gépre), SLES (nem tudom, max 5%-ban fordul elő Oracle alatt, nagyon ritkán találkozom vele), preferencia ebben a sorrendben. Otthoni környezetben esetleg Windows (na arra nem is jött ki a legújabb XE).
A desktop Linux distro-t felejtsük el, működésre lehet bírni rajta, egy Fedora-n még könnyebben, de egy Ubuntu-n már nehezebben, de nem is ezzel érdemes foglalkozni, hanem a hasznos dolgokkal. Pl. egy Oracle Linux-on alapból megy minden a saját repo-ból és beránt minden függőséget, létrehozza a usert, beállítja a kernel paraméteretek, limiteket, stb.
Annyi még, hogy fejlesztői irányból érdekel és nem infra/DBA oldalról, akkor kb. letöltesz egy előre összerakott virtuális gépet és kész: [link]
[ Szerkesztve ]
-
soldi3r
veterán
-
bpx
őstag
válasz Ablakos #3946 üzenetére
Kb. 2,5 éve van ilyen, hogy Red Hat Developer license.
[link] Itt rányomsz a letöltésre, elkezdi letölteni az ISO-t, és továbbít egy olyan oldalra, ahol leírja, hogy hogyan telepítsd. Kb. annyi a lényeg, hogy telepíteni kell a "Developer Tools" add-ont, és ha ez megvan, a telepítés végén az RH account adatok megadása után automatikusan regisztrálja a gépet, lesz rá 1 éves licenc, lehet vele használni a RH repot, stb. 1 év után, ha lejárt, kell rá renew, szintén ingyenes [link]
Ha másért nem, nekem legalább azért jó volt, mert így legalább elérem access.redhat.com-on a Subscriber Exclusive Contentet, mert egyébként nincs semmilyen RH előfizetésünk céges szinten.
[ Szerkesztve ]
-
updog
senior tag
válasz soldi3r #3949 üzenetére
Én azt hiszem nem kötelező, az ORACLE_HOSTNAME környezeti változóhoz állítja be a hosts és hostname tartalmát, de anélkül is működik ha csak saját magad használod (pl. IP alapján). Valaki javítson ki ha tévedek
"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ó!"