Hirdetés

2024. április 23., kedd

Gyorskeresés

Útvonal

Fórumok  »  Szoftverfejlesztés  »  SQL kérdések (kiemelt téma)

Hozzászólások

(#651) martonx válasza PazsitZ (#650) üzenetére


martonx
veterán

akkor jó. Végülis egy végrehajtási terv megmutatná, nem vettem a fáradtságot, hogy teszteljem.

Én kérek elnézést!

(#652) Immy


Immy
őstag

Lehet hülye kérdés:

Hogyan lehet postgres sql servert linux alatt áthelyezni egy másik meghajtóra? (winchesterre)

Apró: https://hardverapro.hu/aprok/hirdeto/immy/index.html

(#653) rt06 válasza Immy (#652) üzenetére


rt06
veterán

nem tudom, hogy a postgres hol tarolja az adatokat, de csak azt kell athelyezned
ha minden igaz, akkor valahol a /var/lib/postgres, vagy hasonlo mappaban lesz
en ezt ugy szoktam megoldani, hogy leallitom az adatbazisszervert, athelyezem az adatot, maly a konyvtarrol annak eredeti helyere csinalok egy symlink-et
ezutan a szervert ujbol elinditva, az eredeti helyen keresve meg fogja talalni az adatokat (a symlink-nek koszonhetoen)

Politikailag korrekt, valamint munkahely- és gyermekbarát aláírás, amiben egyáltalán nincsen p*na.

(#654) vgergo


vgergo
aktív tag

Sziasztok

Lehet olyan lekérdezést csinálni, hogy azokat az oszlopokat jelenítse meg, amelyik "a" betűvel kezdődnek?
oszlopaim nevei: a1,a2,a3,b1,b2,b3
Én ezekből csak az a1,a2,a3 oszlopokat szeretném megjeleníteni, de mivel sok van belőlük ezért nem akarom felsorolni az összes oszlopnevet.

SELECT Tablanev.a*
FROM Tablanev;
mert ez nem működik nekem.

Előre is köszi!

üdv.:vgergo

(#655) M.Úr válasza vgergo (#654) üzenetére


M.Úr
tag

Szerintem nem lehet.

szerk.:
"de mivel sok van belőlük ezért nem akarom felsorolni az összes oszlopnevet."
Azért ennyire lusták ne legyünk :-)
Ha meg de, akkor előbb kérd le az oszlopneveket, dolgozd fel az eredményt, és az alapján generálj lekérdezést.

SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'Tablanev'
AND column_name LIKE 'a%'

[ Szerkesztve ]

(#656) vgergo válasza M.Úr (#655) üzenetére


vgergo
aktív tag

Köszi a gyors segítséget. Így már működik is. (Mondjuk míg megírtam az előző hsz-t, annyi idő alatt akár kézzel is felsorolhattam volna őket.)

(#657) Emc


Emc
csendes tag

Sziasztok!

A kövekező lenne a kérdésem. Eddig MySQL-ben írt SQL lekérdezéseket. A közeljövőben várhatóan szükségem lesz arra, hogy Oracle alatt is tegyek hasonlót. Tudtok valami olyan ingyen vagy olcsón letölthető cuccot, amiben ki tudok próbálni egy-két dolgot Oracle vagy azt imitáló környezetben is? Vagy ne parázzak, nem lesz más? Tudom, hogy szabvány van, de nekem meg nem túl jó tapasztalataim. PL. Acces is csinál furi dolgokat MySQL-hez képest.

Köszi és üdv,
Em

(#658) Lortech válasza Emc (#657) üzenetére


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

(#659) bandikaa


bandikaa
csendes tag

Sziasztok, csavaros kérdés:

Van egy táblám, table.
oszlopok: id_1, id_2, szoveg
tartalma. pl :
1;1;null
1;2;b
1;3;u
1;4;null
1;5;uuu
2;2_1;n;
2;2_2;null;
2;2_3;null;
2;2_4;n;
2;2_5;n;
3;3_1;null;
3;3_2;null;
3;3_3;null;

Hogy a szöszbe lehet olyan sqlt írni, ami a szoveg mezőt vizsgálja, de a végeredménye az id1, azokban az esetekben, ahol a szoveg minden id2 mellett null?

Oracle XE, plsqdev8

HELP!

''Idővel mindenkinek nullára csökken a túlélési esélye.'' <br>''A nőknek csakis a belső értékek számítanak. Pl. klíma, bőrülés stb.''

(#660) martonx válasza bandikaa (#659) üzenetére


martonx
veterán

Csavaros kérdés, aminek ez a megoldása???

Select id_1 from tabla where szoveg is null

Én kérek elnézést!

(#661) bandikaa válasza martonx (#660) üzenetére


bandikaa
csendes tag

Az nem jó, mert felhozza az 1 és a 2 id_1-et is :)

A jó megoldás az, ami csak a 3-mat hozza fel, amúgy ezaz, legalábbis az egyik megoldás:

select * from (select ee.id, sum(ee.z) uu
from (select er.id, decode(er.szoveg, null, 0, 1) z
from (select t.* from table t) er
where 1 = 1) ee
group by id) nyekk
where nyekk.uu = 0

(ennél rövidebb az ideális, de ez is müxik)

''Idővel mindenkinek nullára csökken a túlélési esélye.'' <br>''A nőknek csakis a belső értékek számítanak. Pl. klíma, bőrülés stb.''

(#662) martonx válasza bandikaa (#661) üzenetére


martonx
veterán

Te tudod.

Olvasd már vissza, hogy mire kértél megoldást, milyen példa adatok alapján, és ehhez képest szerinted mi a jó megoldás. A kettő valahogy marhára nincs szinkronban. Azaz vagy nem jó kérdést tettél fel, vagy te magad nem tudod megválaszolni.
Máskor egy fokkal érthetőbben fogalmazd meg a kérdést, ha kérhetem. Esetleg ha odaírtad volna, hogy szerinted mi kellene, hogy legyen a jó megoldás, az is nagy segítség lett volna, ha már a fogalmazás nem meg túl jól.

[ Szerkesztve ]

Én kérek elnézést!

(#663) martonx válasza bandikaa (#661) üzenetére


martonx
veterán

tessék:

select id_1, min(szoveg)
from tabla
group by 1
having min(szoveg) is null

Ha érthetően van leírva, hogy mi is kell, akkor már könnyű jól válaszolni :)

Én kérek elnézést!

(#664) Sk8erPeter


Sk8erPeter
nagyúr

Sziasztok! Bocsi, ide is bedobom a kérdést, hátha valaki a másik topicot nem olvassa: [link].
Köszönöm a segítséget előre is! :R

Sk8erPeter

(#665) gaben


gaben
aktív tag

Sziasztok!
Olyat hogyan tudok megadni, hogy a tábla létrehozásánál alapértelemezettnek a dátumnál az aktuális dátum szerepeljen?
Köszönöm.

(#666) Sk8erPeter válasza gaben (#665) üzenetére


Sk8erPeter
nagyúr

TIMESTAMP-pel megoldva:

CREATE TABLE `teszt_tabla` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`valami` VARCHAR( 256 ) NOT NULL DEFAULT 'blabla',
`timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_hungarian_ci;

[ Szerkesztve ]

Sk8erPeter

(#667) gaben válasza Sk8erPeter (#666) üzenetére


gaben
aktív tag

MEgpróbálom, köszi!

(#668) martonx válasza gaben (#665) üzenetére


martonx
veterán

mssql-nél getdate()
Máskor írd le légyszi a használt SQL típusát is!

Én kérek elnézést!

(#669) bandikaa válasza martonx (#663) üzenetére


bandikaa
csendes tag

Köszi szépen, valóban ez a szép megoldás.

Ettől függetlenül az enyém is működik :)
A feladatot pedig szerintem jól fogalmaztam meg: "a végeredménye az id1, azokban az esetekben, ahol a szoveg minden id2 mellett null"

Na mind1, köszi még 1x, ezt is megtanultam :)

''Idővel mindenkinek nullára csökken a túlélési esélye.'' <br>''A nőknek csakis a belső értékek számítanak. Pl. klíma, bőrülés stb.''

(#670) Abadus


Abadus
csendes tag

Programozási munkára keresünk szakembert. További részletek, illetve ajánlat tételi lehetőség az alábbi linke:

http://www.abadus.hu/Project/Python_programozot_keresek_kisebb_projektmunkara

Üdvözlettel

Az Abadus csapata

www.abadus.hu

(#671) ubid


ubid
őstag

Helló! Egy kis segítség kéne :

Oracle rendszer - PL/SQL - triggerek.

az a feladat , hogy egy egy táblában ha olvsott egy rekord, akkor a napló táblában állítsa át a státuszát 1 esre. ennyi az egész.
viszont tudtommal ezt csak triggerrel lehet megoldani... márpedig trigger az csak :

insert update meg deletére lehet alkalmazni...

hogyan lehetne ezt a feladatot megoldani ?

-.-

(#672) rt06 válasza ubid (#671) üzenetére


rt06
veterán

lehet hulyeseget mondok, de ha a lekerdezest fuggvenybol hivod meg, a visszaadott resultset-re mehet esetleg egy update

mondjuk ezt nem neveznem optimalisnak, de jobb nem jut eszembe

Politikailag korrekt, valamint munkahely- és gyermekbarát aláírás, amiben egyáltalán nincsen p*na.

(#673) ubid válasza rt06 (#672) üzenetére


ubid
őstag

úhh az elég vad lenne :D:D::D:D

de ez így nem annyira jó.. hiszen az lenne a jó , vagyis az a lényege, hogy ha egy rekordot kiselectelünk akármikor az átállítódik a napló táblába 1 esre ( amúgy meg a napl táblába pedig minden utasítás berekül egy trigger segítségével,alap status 0val és ezt kell állítgatni.)

tehát ez így nem igazán jó mert nem mindig függvényből selectelünk.

Másnak nincs ötlete?

[ Szerkesztve ]

-.-

(#674) Lortech válasza ubid (#671) üzenetére


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

(#675) ubid válasza Lortech (#674) üzenetére


ubid
őstag

Ez még mindig sánta megoldás szerintem, ennél még mindig van jobb.

oracle fórum meg is mondja.
elvileg view-t kell használni és arra már mehet instead of megoldással.

-.-

(#676) Lortech válasza ubid (#675) üzenetére


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

(#677) ubid


ubid
őstag

Mivel mindez egy java kisalkalmazásba megy bele egyszerűen csak annyit csináltam hogyha listázok és OK gombal lépek ki akkor update naplo set status= '1'; és ámen.
ennél egyszerűbben nem hiszem hogy lehet.

meg másképp se!

-.-

(#678) Sk8erPeter válasza ubid (#677) üzenetére


Sk8erPeter
nagyúr

Ha Te mindent jobban tudsz, mint az itteni hozzáértő kollégák, akkor minek kérdezel egyáltalán?
Jóindulatúan tanácsot adnak, Te meg előadod, hogy ügyesebb vagy, miközben ki sem fejted az ellenérveidet.

Sk8erPeter

(#679) martonx válasza ubid (#677) üzenetére


martonx
veterán

Talán ha elmondtad volna, hogy mire is kell. Mert már maga felvetésed egy gyengébb agyrémmel ér fel.
Ha annyi a cél, hogy jegyezd, hogy xy elolvasta valamelyik tábla valamelyik sorát, akkor azt célszerű naplózással (mondjuk egy napló táblában jegyzed, hogy ki mit olvasott el) megoldani.
Ráadásul mi van ha xy elolvasta, de zw még nem?
Szerintem maga a felvetésed koncepcionális zsákutca. Persze majd úgyis megmagyarázod, hogy de miért ez a legjobb megoldás.

Én kérek elnézést!

(#680) ubid


ubid
őstag

Helló!

Újabb kérdésem lenne hozzátok :

Oracle db - PL/SQL

azt hogy lehet megoldani, hogy egy mező autómatikusan növekedjen ?
Azt tudom hogy oracle-ben nincsen auto_increment de sequence az van! és úgy tudom ezzel.

de nem tudom hogy hogy lehet használni.

pl gondolom így nem hogy :

create table naplo
id int(2) squence,
stb....
tehát így simán megadni mint az auto incrementet..

Köszi

-.-

(#681) Sk8erPeter válasza ubid (#680) üzenetére


Sk8erPeter
nagyúr

[link]

Sk8erPeter

(#682) ubid válasza Sk8erPeter (#681) üzenetére


ubid
őstag

Köszönöm!

-.-

(#683) martonx válasza ubid (#680) üzenetére


martonx
veterán

Ha nem özönvíz előtti Oracle-t használsz, akkor már van benne auto_increment, ugyanúgy kell használni, beállítani mint mssql-ben, csak éppen sequence-nek hívják.

azaz create table naplo (
id seguence,
stb...
)

működik. Ez esetben az id-d automatikusan növekedni fog.

Én kérek elnézést!

(#684) Lortech válasza martonx (#683) üzenetére


Lortech
addikt

Ez így sose működött oracle-ben.

Csinálni kell szekvenciát és triggert (vagy helyette kódból megoldani) a mezőnek.

Thank you to god for making me an atheist

(#685) martonx válasza Lortech (#684) üzenetére


martonx
veterán

Bevallom Oracle-t sose használtam. PostgreSQL viszont az Oracle kistestvére (mindkettő PLSQL). És PostgreSQL-ben bizony a 8-as verzió óta - ezt én is csodálkozva vettem észre - ha a PLSQL olyat lát, mint a fenti kódom, akkor bizony a háttérben automatikusan létrehozza a szekvenciát, hozzáadja a táblához stb...
Ebből gondoltam, hogy akkor biztos az Oracle is megoldotta már ezt a totál triviális lépést.
Ezek szerint az Oracle még mindig egy fos :)) vagy csak még te se vetted észre, hogy egy ideje már ilyet is tud :)

Én kérek elnézést!

(#686) Lortech válasza martonx (#685) üzenetére


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

(#687) martonx válasza Lortech (#686) üzenetére


martonx
veterán

Senki nem mondta, hogy a DB2 vagy az MSSQL rokona lenne az Oracle PL/SQL-jének. Viszont jé, mit ír a wikipedia a PL/pgSQL-nél:

"It closely resembles Oracle's PL/SQL language."

Mint mondtam az Oracle-t csak nagyon felületesen ismerem, és ami eddig feltűnt, hogy nagyon hasonlít a PostgreSQL-hez (ami nem csoda hiszen rokonok). Ebből gondoltam a fentieket, de úgy látszik ennyire mégsem hasonlítanak, van amiben a PostgreSQL előrébb jár.

Én kérek elnézést!

(#688) Lortech válasza martonx (#687) üzenetére


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

(#689) Frigo


Frigo
őstag

Aki SQLite-ot használ az milyen GUI-val szokta ?Létezik hozzá phpmyadminhoz hasonló ?

(#690) Sk8erPeter válasza Frigo (#689) üzenetére


Sk8erPeter
nagyúr

SQLiteSpy
Nem egy phpMyAdmin, de azért talán megteszi. :)
Meg még SQLite Maestro, SQLite Database browser, FF-beépülő, stb.

Sk8erPeter

(#691) WonderCSabo


WonderCSabo
félisten

Üdv!

Egy proceduret írok, és ellenőriznem kell, hogy egy lekérdezés üres rekodrodt adott vissza-e, vagy sem. (Ebben a pédában: van-e x,y shelf vagy nincs?)

Ezt hogy tudom megtenni?

Ezt próbáltam:

temp shelves.loadability%TYPE := NULL;
BEGIN

select loadability into temp from shelves where rownumber = x and columnnumber = y;
IF temp IS NOT NULL THEN
/* do something when it's not empty */
ELSE
/* do the other thing when it's empty */
END IF;

De így sose lép be az ELSE ágba... :(

Szerk.: Mielőbb vki félreértené: szüksége van az else ágra, mert hanem létezik a shelf, insertelnem kell.

[ Szerkesztve ]

(#692) martonx válasza WonderCSabo (#691) üzenetére


martonx
veterán

Ha MSSQL-ről beszélnénk azt mondanám, hogy próbáld ki ezt:

IF NOT EXISTS (select loadability into temp from shelves where rownumber = x and olumnnumber = y)
BEGIN
-- Ide jön majd az insert
END
ELSE
-- Ide jön más valami

De valami ilyesminek Oracle-lel is mennie kellene.

[ Szerkesztve ]

Én kérek elnézést!

(#693) klambi


klambi
addikt

microsoft sql server management studio ba hogy tudok belépni, vagy valamilyen adatbázis csinálni, mert c# programozáshoz kell adatbázis, és kellene hozzá...
valaki help pls!

"Mond szépen angolul: Gyors róka!"

(#694) WonderCSabo válasza martonx (#692) üzenetére


WonderCSabo
félisten

Üdv!

Köszi a választ. Oracle PL/SQL. Az EXISTS-et én is próbáltam, de vmiért nem ment. Talán azért, mert nem nyitottam új blokkot utána, csak simán THEN és az utasítások. Viszont sok idő után rájöttem erre a barom egyszerű megoldásra...:

select count(*) into temp from shelves where rownumber = x and columnnumber = y;
IF temp = 0 THEN
/* insert */
ELSE
/* más */
END IF;

Szerk.: Persze az EXISTS jobb lenne, ha működik, mivel nem kell plusz változó, de most nem tom sajna már kipróbálni.

[ Szerkesztve ]

(#695) Sk8erPeter válasza klambi (#693) üzenetére


Sk8erPeter
nagyúr

[link]

Sk8erPeter

(#696) Lortech válasza WonderCSabo (#691) üzenetére


Lortech
addikt

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

(#697) bpx válasza klambi (#693) üzenetére


bpx
őstag

alapból nem települ a visual studio-val, külön le kell tölteni és telepíteni az sql server verziójának megfelelőt
belépésnél meg adatbázisnak megadod a ./SQLEXPRESS-t (hacsak nem telepítettél külön teljes MS SQL Servert)

(#698) WonderCSabo válasza Lortech (#696) üzenetére


WonderCSabo
félisten

:R

(#699) WonderCSabo


WonderCSabo
félisten

Üdv!

Nagyon gagyi kérdés, de egyszerűen nem jövök rá:

van egy táblám

Name Null Type
------------ -------- ------------
NAME NOT NULL VARCHAR2(40)
TYPE NOT NULL VARCHAR2(40)
COLOR NOT NULL VARCHAR2(40)
BESTBEFORE NOT NULL DATE
AMOUNT NUMBER
WEIGHTPERCAN NUMBER(5,2)
ROWNUMBER NUMBER
COLUMNNUMBER NUMBER

Hogyan tudom szummázni az egyes polcokon lévő festékek számát (tehát az azonos rownumber, columnnumber számpárokhoz tartozó amountot akarom szummázni, és megkapni minden egyes számpár szummáját) ?

(#700) WonderCSabo válasza WonderCSabo (#699) üzenetére


WonderCSabo
félisten

Ehh, látszik, hogy fáradt vagyok, itt a megoldás:

SELECT rownumber,columnnumber, sum(amount)
FROM orders
GROUP BY rownumber, columnnumber;

Útvonal

Fórumok  »  Szoftverfejlesztés  »  SQL kérdések (kiemelt téma)
Copyright © 2000-2024 PROHARDVER Informatikai Kft.