Új hozzászólás Aktív témák
-
chabeee
tag
Sziasztok,
Van egy adatbázisom, és abban van 3 olyan táblám, aminek az adatait egy programban felhasználom, ezeket lekérem egy listába,(minden táblát külön listába), ezt követően ehhez a listához hozzádobálok még pár adatot, és azt írom vissza az adatbázisba, oly módon, hogy elsőnek dropolom az összes táblát, utána létrehozom őket, ekkor az összes üres, utána szépen belepakolom az összes elemet a listákból, ez nem valami szép megoldás. Ezért az a kérdés, hogy lehet e olyat megvalósítani sql-lel, hogy csak az új adatokat dobálja bele? Sajnos van olyan táblám, ahol nincs privát kulcs, tehát olyan feltöltés kell amiben lehet több ugyanolyan adat.
Előre is köszi a segítséget. -
PumpkinSeed
addikt
válasz
chabeee #2301 üzenetére
Ennél csak jobb megoldás van.
Az UPDATE utasítással frissítheted a már meglévő adatokat, az INSERT utasítással pedig új sort vihetsz fel a táblába. Már csak azt kell kitalálnod, hogy hogyan csináld meg. Így látatlanban ennyit tudok csak mondani.
"Akinek elég bátorsága és türelme van ahhoz, hogy egész életében a sötétségbe nézzen, elsőként fogja meglátni benne a fény felvillanását." - Kán
-
chabeee
tag
válasz
PumpkinSeed #2302 üzenetére
igen ezekkel tisztában vagyok
-
PumpkinSeed
addikt
válasz
chabeee #2301 üzenetére
(#2303) chabeee
Nem nagyon értem a mechanizmust. Illetve miben használod, PHP? Külön lekérdezésekben kéred le, vagy egy lekérdezéssel táblák összekapcsolásával? A lekért adatok közül mindben végzel módosítást, vagy csak egy adott részében? Felesleges mindig DROP-olni a táblát, több okból is. Főleg ha utána nem üríted a recycle_bin-t. Meg lehet valósítan persze, de nagyon homályosan írtad le.
Szerintem az valahogy úgy nézne ki, hogy ha csak bizonyos sorokat változtatsz akkor valami alapján kiszelektálod őket a lekérdezésben, majd egy változóban letárolod azt, amit változtattál rajta és egy UPDATE-el visszatöltöd. Gondolom a privát kulcs alatt az elsődleges kulcsra gondoltál, ha a táblában nincs definiálva elsődleges kulcs kényszer akkor nincs akkor gond, ha van egy olyan oszlopod ami elsődleges kulcshoz hasonló értem ezalatt, hogy nincs NULL érték illetve nem azonosak. Ilyen sor nélkül felesleges is megtervezni egy táblát mert anomáliák lépnek fel. Ha ez megvan akkor tudod teljesíteni azt, hogy a SELECT-ben a változtatásra szoruló sorokat választod ki.
[ Szerkesztve ]
"Akinek elég bátorsága és türelme van ahhoz, hogy egész életében a sötétségbe nézzen, elsőként fogja meglátni benne a fény felvillanását." - Kán
-
spyspyspy
csendes tag
Sziasztok
Zoho, Trackvia, Quickbase, Blist, stb. online adatbaziskezelokkel kapcsolatban keresek forumot de sehol semmi. Valakinek tapasztalata? Otlete?
Nekilatnek osszerakni minivallalkozasunk életét amihez adatbazis kell es gondoltam nem akarok Access-t. Online kene. Nem is kell bonyolult rendszer.
Koszonom -
chabeee
tag
válasz
PumpkinSeed #2304 üzenetére
Javaban csináltam, rájöttem hogy kell szépen.
Az a lényeg, hogy van három táblám, és azokhoz akartam adatokat szúrni/módosítani ha a kliens úgy akarja. Igazából az volt a probléma, hogy nem egyből töltöttem fel az adatokat, hanem, megvártam amíg a kliens kilép és redekraráétattam a táblákat, a listából feltöltöttem az elemeket. De ez így nagyon verzió nullás, tehát okosabban egyből a hozzáadás pillanatában kell beszúrni az adatbázisba is. Így már gyorsabb lett. -
nova001
senior tag
hali
lenne acces dokum amibe a következő lekérdezés kellene ami nem megy ?
[link]
melyik szoba szabad mától 2 éjszakára ?valaki tudna segiteni ?
[ Szerkesztve ]
-
PumpkinSeed
addikt
válasz
chabeee #2309 üzenetére
Nem tudom milyen SQL-t használsz, de ha igazán jól akarod csinálni akkor a COMMIT és a ROLLBACK kulcsszavakat használod, ezekkel tudod vezérelni, hogy mi legyen az utasításod, vagy az utasításaid végkimenetele.
"Akinek elég bátorsága és türelme van ahhoz, hogy egész életében a sötétségbe nézzen, elsőként fogja meglátni benne a fény felvillanását." - Kán
-
chabeee
tag
válasz
PumpkinSeed #2311 üzenetére
oh ezt nem tudtam, mysql-t használok
megnézem miket lehet velük ügyködni, köszi -
Apollo17hu
őstag
válasz
nova001 #2310 üzenetére
Ne INNER JOIN-t használj, mert az a [szoba] és a [foglalt] táblák metszetét adja, tehát pont hogy a foglalt szobák listáját kapod. Neked olyan szobák kellenek, amelyek (1) vagy nincsenek benne egyáltalán a [foglalt] táblában, (2) vagy benne vannak, de nem a kiválasztott két éjszakára lefoglalva.
Kezdésnek LEFT JOIN-nal kösd a [foglalt] táblát, ezután pedig a kapott listát szűrd le (1) és (2) szerint.
-
jocomen
aktív tag
válasz
chabeee #2312 üzenetére
Felviheted a kliens által bevitt szavakat egyből az adatbázisba, de tartalomszűrést, ellenőrzést azért csinálnék. Pl védett karaktert (!;<>{ }[ ]...), parancsot ne vihessen be, illetve ne rendelhessen meg olyasmit, ami nem szerepel a kínálatodban. Pl. ne lehessen búvártanfolyamra jelentkezni egy nyelviskolában.
Rollback az a tranzakciókhoz kell. Ha egy utasítás-csokrot csak abban az esetben akarsz lefuttatni, ha annak minden utasítása végrehajtható. Ellenkező esetben rollback transaction, azaz visszaállítja az eredeti állapotot (pl banki számla-műveletek).
-
jocomen
aktív tag
válasz
nova001 #2310 üzenetére
Lehet van szebb kód is, de nálam ezt működik:
SELECT szszám
FROM foglalt
WHERE szszám NOT IN (SELECT szszám
FROM foglalt
WHERE date() BETWEEN tól AND ig
AND date()+1 BETWEEN tól AND ig);Jó lenne ha végre kihalnának, vagy nyugdíjba mennének azok a tanárok, akik össze-vissza rövidítenek, és két táblában máshogy hívják ugyanazt a kulcsot.
Véletlenül nem GD/Számalkba jársz, és egy szőke nő tanítja az adatbázist?[ Szerkesztve ]
-
jocomen
aktív tag
válasz
Apollo17hu #2316 üzenetére
Igazad van, az utolsó sor elejére AND helyett OR kell (pedig teszteltem olyan adattal is, csak benéztem).
[ Szerkesztve ]
-
Jagerszki
csendes tag
Üdv!
Csak most ismerkedek az SQL-l ezért szeretném a segítségeteket kérni.
Egy egyszerű excel táblát kellene sql adatbázissá konvertálnom.Egyszerűen a phpMyAdmin - import - file kiválasztása menüjét használtam volna, de csak szép hosszú eror-t kaptam. Próbáltam CSV formátumot is de ugyan az.
Ti hogyan vinnétek át egy EXCEL táblát SQL adatbázisba? Sima egyoldalas és nem kell szűrni mert eleve van egyedi azonosító mező az EXCEL táblában. Létre kell hozni előtte egy megfelelő szerkezetű SQL adatbázist vagy simán felismeri a szabályokat a phpMyAdmin?
[ Szerkesztve ]
Aki kérdez, öt percig buta, ám aki nem kérdez, örök életre buta marad.
-
Ablakos
őstag
válasz
Jagerszki #2319 üzenetére
Ha mysql a cél DB, akkor ingyenes excel kieggel szolgál az Oracle. Tekintsd meg!
[ Szerkesztve ]
-
Sk8erPeter
nagyúr
válasz
Jagerszki #2319 üzenetére
Csak a phpMyAdminból lehetett kitalálni, hogy MySQL-t használsz (nem mindegy, hogy milyen SQL-implementáció).
"Létre kell hozni előtte egy megfelelő szerkezetű SQL adatbázist"
Jaja."vagy simán felismeri a szabályokat a phpMyAdmin?"
Nincsenek "szabályok", úgyhogy nincs mit felismerni.Viszont amit Ablakos linkelt az imént, az igen jónak tűnik. Ez már próbálja is detektálni az egyes mezők típusát.
[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz
Jagerszki #2322 üzenetére
https://dev.mysql.com/doc/refman/5.7/en/mysql-for-excel-install.html
"To install, download and execute the MySQL Installer. Select the MySQL for Excel product and then proceed with the installation. See the MySQL Installer manual for additional details."
Sk8erPeter
-
Jagerszki
csendes tag
válasz
Sk8erPeter #2321 üzenetére
Üdv!
Oké, még csak most ismerkedek ezzel az egésszel.
( Én még dBase-t tanultam 25 éve)
Szóval akkor az eredeti kérdés: te hogyan csinálnád?
( Nem kell gyorsnak lenni-e és nem kell ellenőrizni és csak egy alkalommal kell csinálni. )Aki kérdez, öt percig buta, ám aki nem kérdez, örök életre buta marad.
-
zsambek
aktív tag
Sziasztok,
Microsoft Access 2010-vel csinálok emelt szintű érettségit, és a Not In függvényt valahogy nem tudom összehozni. 2011. május emeltszint, adatbáziskezelés, 7. feladat
A megoldásban így szerepel:
"SELECT DISTINCT tag.nev
FROM tag, par, tanc
WHERE par.noid=tag.id AND
par.tancid=tanc.id AND
tanc.datum=#8/4/2001# AND
tag.id NOT IN
(SELECT noid
FROM tag, par, tanc
WHERE par.ferfiid=tag.id AND
par.tancid=tanc.id AND
tanc.datum=#8/4/2001# AND
tag.nev="Kardos Norbert");"Viszont nekem valamiért így jön ki. És szintaktikai hibát dob ki a Not In-re
SELECT tanc.datum, par.noid
FROM (tanc INNER JOIN par ON tanc.id = par.tancid) INNER JOIN tag ON par.noid = tag.id
WHERE (((tanc.datum)=#8/4/2011#) AND ((par.noid)= NOT IN(SELECT DISTINCT par.noid
FROM (par INNER JOIN tanc ON par.tancid = tanc.id) INNER JOIN tag ON par.ferfiid = tag.id
WHERE (((tanc.datum)=#8/4/2001#) AND ((tag.nev)="Kardos Norbert")))
));Az első kérdésem az, hogy nekem miért INNER JOIN, meg ilyen szövegek vannak az Accessemben, a másik pedig, hogy mi rossz a lekérdezésemben a Not In-vel?
Válaszaitokat előre is köszönöm,
zsambek`[ Szerkesztve ]
-
zsambek
aktív tag
válasz
Apollo17hu #2329 üzenetére
Szia,
A lekérdezéstervezővel, ahogy az iskolában tanították.
Az = a probléma?
zsambek`
-
zsambek
aktív tag
válasz
Apollo17hu #2331 üzenetére
Tehát az egyenlőnek nem kell ott lennie, csak a NOT IN-nak.
Köszönöm
zsambek` -
dellfanboy
őstag
egy olyan kérdésem lenne, hogy van egy oszlopom ami datetime néven fut yyyy-mm-dd óóra:perc:mp
pontosan milyen selectet kellene írnom pl/sql-be hogy megkapjam a 2014jan1-2014feb1 közötti értékeket? sokszor kopiztam már ki a eredményből a korrekt értékeket de sehogy se akar lefutni...eladó dolgok:mondd az árát és vidd http://hardverapro.hu/tag/dellfanboy#aprohirdetesei
-
bpx
őstag
válasz
dellfanboy #2333 üzenetére
where oszlop between to_date('2014-01-01', 'YYYY-MM-DD') and to_date('2014-02-01', 'YYYY-MM-DD')
-
dellfanboy
őstag
van egy sql-em amit az egyik tapasztalt kollégám adott
így épül fel:
select itt néhány oszlopot szummáz amikor teljesen a feltétel sum(case when...
utána jön a from majd ami számomra teljesen új: újabb select ordered use hash oszlopnevek itt szintén szummázunk pár oszlopot
megint egy from táblaneveke és a where feltételek
és a végén group by-olunkén kezdő vagyok sql téren (suliba nem is tanultam csak autodidakta módon internetről) de tudnátok segíteni miért jók az ilyen select a selectbe lekérdezések?
egyáltalán az use hash micsoda?létrehoz egy hash táblát? de akkor miért nem create-el keződdik?eladó dolgok:mondd az árát és vidd http://hardverapro.hu/tag/dellfanboy#aprohirdetesei
-
Ablakos
őstag
válasz
dellfanboy #2336 üzenetére
Egy beillesztett kód ( eseteleg sql fejlesztői környezet megnevezéssel) biztosan többet mondana annak, aki segíteni szeretne és tud is.
-
bpx
őstag
válasz
dellfanboy #2336 üzenetére
amikor futtatsz egy lekérdezést, ahhoz az adatbázis végrehajtási tervet készít, és az optimizer az összes lehetséges tervet megvizsgálja, és azokból választja ki a szerinte optimálisat
ha mondjuk így néz ki az sql (Oracle), hogy:select /*+ ordered use_hash(tabla1 tabla2) */ oszlop1, oszlop2, ... from tabla1, tabla2, tabla3 ...
akkor a /*+ ... */ közti "kommentek" valójában optimizer hintek, amivel befolyásolhatod hogy milyen terv készüljön
az ordered azt jelenti, hogy a tábláknál a join sorrendje az lesz, ahogy le van írva az sql szövegében, és nem az adatbázis dönti el, tehát a fenti példában először veszi a tabla1-et, utána a tabla2-t, majd a tabla3-at
a use_hash meg azt jelenti, hogy a tabla1-nél es tabla2-nél hash joint fog használni (míg a hint nélkül lehet, hogy nested loops join vagy merge join lenne)azt meg, hogy miért jó a fromba beágyazott select, nem tudom
sokszor meg lehet oldani anélkül is, ha viszont kell, akkor meg van sokkal olvashatóbb módszer is: with .. as ..
pl. (persze itt pont nem kell, meg az egyszerűsége miatt nincs is nagy különbség, de most ennyire telik tőlem):select * from ( select * from hr.employees where hire_date > date '2005-01-01') e2005
where e2005.salary > 15000;
with e2005 as (select * from hr.employees where hire_date > date '2005-01-01')
select * from e2005 where e2005.salary > 15000; -
Roley_05
csendes tag
Sziasztok!
Kezdő sql felhasználó vagyok, az alábbi kérdéssel fordulok hozzátok
Adott egy tábla, benne pl az alábbi adatok
hónap érték
201402 1,1
201403 3,6
201404 2,4a cél az lenne, hogy a adott hónaphoz hozzá tudjam rendelni egy új oszlopban a korábbi hónap értékét, az alábbi módon
hónap érték érték-1hónap
201402 1,1 3,6
201403 3,6 2,4
201404 2,4Van erre vmi egyszerű megoldás, trükk. Bármi segítséget szívesen veszek.
üdv,R
-
Apollo17hu
őstag
válasz
Roley_05 #2339 üzenetére
Analitikus függvényekkel (LAG, LEAD) lehetne megoldani, de szerintem neked egyszerűbb, ha fogod a táblád, és hónap mentén visszakötöd önmagába.
Feltételezve, hogy számként tárolod a hónapot, ezt talán le tudod futtatni:
SELECT t1.honap
,t1.ertek
,t2.ertek AS korabbi_ertek
FROM tabla AS t1
,tabla AS t2
WHERE 1 = 1
AND t1.honap = t2.honap(+) + 1 -
sztanozs
veterán
válasz
Apollo17hu #2340 üzenetére
Miért kell a where eleje?
1 = 1 AND ...[ Szerkesztve ]
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...
-
Apollo17hu
őstag
válasz
sztanozs #2341 üzenetére
Nem kell bele.
Automatikus szövegkiegészítést és programkód-rendezőt (beautifier) használok: [w] + [space] lenyomására a "WHERE 1 = 1 AND" karaktersorozatot kapom. Az "1 = 1" miatt a beautifier a következő sorba rendezi az AND operátort és az azt követő feltételt, így ha ki kell kommenteznem, nem kell azzal bajlódnom, hogy a WHERE -rel egy sorban van, így az egész sort kommentezhetem duplakötőjellel.
[ Szerkesztve ]
-
Sk8erPeter
nagyúr
válasz
FireFox1996 #2342 üzenetére
"szerintem az felesleges... még 1 értékelést kell végezni az sql servernek..."
Tyűha, biztos HATALMAS overheadet jelent az adatbázisszervernek az 1-nek az 1-gyel való összehasonlítása...Sk8erPeter
-
FireFox1996
őstag
válasz
Sk8erPeter #2344 üzenetére
sok kicsi sokra megy
Programozás szempontból a felesleges sort/értékelést ki kell hagyni...<< Nem szabad félni a kudarctól, játszd végig a játékot ! >>
-
Sk8erPeter
nagyúr
válasz
FireFox1996 #2345 üzenetére
Ez az a kategória, amire még az elcsépelt "sok kicsi sokra megy"-mondást se lehet ráhúzni, annyira jelentéktelen a különbség.
Az tény, hogy felesleges, de lényegében nem számít, max. ránézésre tűnik "szemetesebbnek" a kód, bár van olyan szempont is, amit Apollo17hu említett.
Sk8erPeter
-
FireFox1996
őstag
válasz
Sk8erPeter #2346 üzenetére
Abban az esetben hasznos, ha dinamikus where feltételekkel dolgozik a query.
Más esetben melőzni kell az ilyeneketmondok más példát: egy rekordban van egy blob típusú mező, de nem használják/nem töltik (ezt mondják neked a felhasználók)... És a kódod sem használja azt a mezőt, de még is lekéred a serverről a clientre (tipikus "select mezők1, mező2.. form" helyett "select * from" ...).
Téged nem zavar, mert azt mondták neked, hogy nem használják... Tehát bent hagyod a lekérdezésben...
Később egyszer vki kitöltötte a mezőt, és jó nagy lett a rekordod mérete, és ha a programod futásközben többször kéri le a rekordot, növeli az adatforgalmat, elfogy a serveren/clienten rendelkezésre álló memória... egyszer csak leáll az egész, mert nincs elég memória a gépen...Tehát ha vki tőlem kér tanácsot, akkor: ami felesleges kód, akkor ne írjuk oda!
<< Nem szabad félni a kudarctól, játszd végig a játékot ! >>
-
Apollo17hu
őstag
válasz
FireFox1996 #2347 üzenetére
Ha már ilyen mértékű optimalizálásról esett szó, azt nem tudod véletlenül, hogy a kommentezések (nem a hintek, hanem a normál kommentek) lassítanak-e bármit a futási időn?
-
FireFox1996
őstag
válasz
Apollo17hu #2348 üzenetére
Az a fordító programnak a dolga, és más, mint ami értékelődik a futás közben
kötekedszEgy true feltétel van ott, valóban nem hat az utasítás végrehajtási tervébe, mert elég okosak az sql serverek
[ Szerkesztve ]
<< Nem szabad félni a kudarctól, játszd végig a játékot ! >>
-
Apollo17hu
őstag
válasz
FireFox1996 #2349 üzenetére
nem kötekedés akart lenni, nem tanultam a dolgot ilyen mélységben
kösz a választ
Új hozzászólás Aktív témák
- Asus ROG Strix Go BT
- Új Ulefone Armor 26 Ultra -120Watt -Ütés Víz és Por Álló Strapa Telefon -Ujjlenyomatos -Endoszkóp
- Philips 24M1N3200ZA Gaming 24" monitor
- Philips Evnia 49M2C8900 (49", OLED, 5120x1440, 240Hz, 10bit, Ívelt 1800R, 0,03ms) Új, Bontatlan!
- Laptopok, Pc-k professzionális karbantartása, tisztítása.
Állásajánlatok
Cég: Ozeki Kft
Város: Debrecen
Cég: Ozeki Kft
Város: Debrecen