Van egy SQL problémám:
Van két tábla. Az egyk neve legyen A, a másik B. ''A'' tábla tartalma: KVOD, TKOD, DATUM, MENNY, stb. ''B'' tartalma: VKOD, TKOD. A mezőnevek egyezősége nem véletlen.
A feladat: Töröljük ki ''A'' táblából azokat a sorokat, amelyek benne vannak a ''B'' táblában! (természetesen VKOD és TKOD is meg kell, hogy egyezzen)
Vajon hogy néz ki az SQL parancs?
[Szerkesztve]
Gyorskeresés
Legfrissebb anyagok
- Bemutató A használt VGA piac kincsei - Július I
- Bemutató Bakancslista: Route 66 Chicagotól Los Angelesig
- Tudástár AMD Radeon undervolt/overclock
- Tudástár RTX3070 16 GB VRAM-mal?
- Bemutató Toyota Corolla Touring Sport 2.0 teszt és az autóipar
Általános témák
LOGOUT.hu témák
- [Re:] [parandroid:] KerékPH!áros 2024 tavaszi balatoni megmozdulás
- [Re:] [t72killer:] Számítógép a harctérről: barátkozás egy Toughbook CF-20-al
- [Re:] [sziku69:] Fűzzük össze a szavakat :)
- [Re:] [enginev3.0:] FRISSÍTVE!!! Xpenology DSM 6.1 Telepítése
- [Re:] Real Racing 3 - Freemium csoda
- [Re:] [Luck Dragon:] Asszociációs játék. :)
- [Re:] [sziku69:] Szólánc.
- [Re:] [D1Rect:] Nagy "hülyétkapokazapróktól" topik
- [Re:] [elektrotank:] Ti mit sportoltok? - Egy egészségesebb életmód!
- [Re:] [Algieba:] Egy szép tavaszi séta képei
Szakmai témák
PROHARDVER! témák
Mobilarena témák
IT café témák
Hozzászólások
Imrege
csendes tag
Snypie
csendes tag
DELETE FROM A
WHERE A.VKOD = B.VKOD
AND A.TKOD = B.TKOD
Imrege
csendes tag
Igen, az ACCESS ennél a megoldásnál kérte a B.VKOD illetve a B.TKOD értékét paraméterként. Merthogy ugyebár a B tábla nincs felsorolva...
Tersius
tag
Halkan mondom, mert lehet, hogy hulyeseg (bar igy tanitottak nekem, azt hiszem):
DELETE FROM A
WHERE A.VKOD = B.VKOD
AND A.TKOD = B.TKOD
A B.VKOD helyett egy alselectet csinalj.
..
WHERE VKOD=(SELECT VKOD FROM B)
..
Ez csak egy tipp, en igy probalnam megcsinalni (oracle 9i alatt, ha ez szamit)
''My curvy sword at your neck, you unclean son of a dog of the female persuasion!''
Alan
aktív tag
DELETE FROM A
WHERE VKOD =
(SELECT VKOD FROM B
WHERE B.VKOD = A.VKOD
AND B.TKOD = A.TKOD)
lao ce
aktív tag
vaaagy oracle-ben legalabbis menne ha kiprobalnam:
delete from A
where (VKOD, TKOD) in (select VKOD, TKOD from B)
(szerk: azt hiszem)
[Szerkesztve]
nicht kompot
chop
őstag
bizony-bizony, buta accessnek alselect kell..mysqlben nem..access(officeban) 100 rongy korul van, mysql ingyenes..kesz
(mielott vki lehurrogna: tudom, az access mezei felhasznaloknak keszult, de konyorgom, mi a szarnak kellett jet sqlt bele rakni, miert nem volt jo a szabvany...? ejnye-ejnye, billy boy..)
RAM
őstag
Sziasztok!
Segítséget szeretnék kérni egy primitív (egy soros megoldásokkal) feladatsor megoldásához.
(Esetleg kérdedznék még programozásból lámer kérdéseket...)
Ki lenne ily kedves segítőkész?
[Szerkesztve]
Csak tisztán
Tersius
tag
En irtam neked imelt, hogy egy probat tehetunk, hatha sikerul, de nem valaszoltal.
[Szerkesztve]
''My curvy sword at your neck, you unclean son of a dog of the female persuasion!''
RAM
őstag
Nem tudom mi van, vmi gáz van ezzel az emaillel!
Akkor elküldöm neked miről lenne szó egy másik e-mailcímről!
Csak tisztán
RAM
őstag
Levél most ment! (feladatbenne (levélben, csatolt doc-ban is))
Csak tisztán
sequator
senior tag
SOS kellene help, remélem tud valaki segíteni.
win2ksp4+sql2ksp3 éppen query analyserben írtam egy selectet, és elment az áram, de a querym nem volt elmentve, honnan lehet esetleg előbányászi a query tartalmát?
azt remélem, hogy valahol csak magvan valami tmp fájlban vagy hasonlóban, nagyon kellen, mert egész napi melómat újra kellen kezdenem
Sautia
sequator
sequator
senior tag
második up, ha valaki tud segítsen, mert még QA-t sem merek indítani, nehogy felülírja az esetleg létező untitled.sql-t
Sautia
sequator
Robiba
tag
Szerintem memóriában tárolja, nincs semmi tmp
Nem tudom milyen select, de ha egy napig tart, biztos rossz. (bocsi)
Billentyűzet hiba! Nyomjon F1-et a folytatáshoz!
sequator
senior tag
nem egy select és nem egy napig fut, hanem a nap folyamán írtam 10-15 selectet különböző lekérdezéskhez és azok kellettek volna.
azért kösz, szerncsére az 5 legfontosabbat sikerült egész hamar újra megírni
Sautia
sequator
OddMan
őstag
Egy kicsit off...
Tanultam a relációs adatbázisokról. Megtanultam a normálformákat és ismerem az egyed-kapcsolat modellt is. A kapcsolatokról is tanultam és azok ábrázolásáról az egyed-kapcsolat modellben. A kérdésem, hogy hogyan kezdjek el megtervezni egy egyszerűbb adatbázist? Szal egyed-kapcsolat modell segítségével el akarok jutni a 3nf-ig és a kapcsolatokat is ábrázolni akarom.
Egy olyan logikai tervig szeretnék eljutni, amiből már könnyedén lehet bevinni a dolgokat egy relációs adatbáziskezelőbe.
[Szerkesztve]
''A szíved szabad! Légy bátor és kövesd!''
L3zl13
nagyúr
Ceruzával és papírral...
Szvsz megnézed milyen adatokat kell tárolni, ezeket szépen felírod magadnak, aztán normalizálod az adatbázist.
Aki hülye, haljon meg!
OddMan
őstag
Igen papíron akarom megtervezni.
Tehát akkor először az egyedeket kell összeszednem és utána azoknak a tulajdonságait kell megadnom igaz? Ez után kell a normalizálást elkezdeni és aztán a kapcsolatokat jelölni?
[Szerkesztve]
''A szíved szabad! Légy bátor és kövesd!''
L3zl13
nagyúr
Szvsz a kapcsolatok már a normalizálásból adódnak jórészt... Tehát ez párhuzamosan kéne, hogy történjen.
Aki hülye, haljon meg!
OddMan
őstag
Nem tudsz egy doksit a neten, ahol egy végtelenül egyszerű példán végig lehetne kísérni a folyamatot?
''A szíved szabad! Légy bátor és kövesd!''
L3zl13
nagyúr
Háááát, ha tanultál róluk, akkor ott kellett volna találkoznod példával szerintem. Sajnos nem tudok ilyen doksit, de a gugli talán segíthet.
Aki hülye, haljon meg!
rollingrock
csendes tag
Én sahosem értettem igazán ezeket a normálformás alakokat ezért mindig ''ösztönösen'' úgy készítettem el az adatbázis felépítést ahogy szerintem jó. Aztán kiderült néha hogy így teljesen mégsem jó...
tildy
nagyúr
Huh tudna valaki segíteni az alábbiakban?
Mi az indexelés?
Mire valók a kulcsok?
Hogy lehet két táblát ''összemergelni''?
mik a DDL, DML, DCL?
Ja és pár relációt is mondajtok már
sürgős!!!
[Szerkesztve]
"Tartsd magad távol azoktól, akik le akarják törni az ambíciódat! A "kis" emberek mindig ezt teszik, de a nagyok éreztetik veled, hogy te is naggyá válhatsz" - Mark Twain
VladimirR
nagyúr
angolul jo? mert akkor index-rol itt talaltam egy leirast => Bővebben: link
tildy
nagyúr
Jó lesz
"Tartsd magad távol azoktól, akik le akarják törni az ambíciódat! A "kis" emberek mindig ezt teszik, de a nagyok éreztetik veled, hogy te is naggyá válhatsz" - Mark Twain
Aaalbi
tag
Szia
Ezek benne vannak a legtöbb adb-kezelés könyvben.
[Szerkesztve]
tildy
nagyúr
azt tudom, de az nekem pont vidéken - Jászalsószentgyörgyön - van én meg pesten vagyok.
Szal otthon van oracle könyvem...
"Tartsd magad távol azoktól, akik le akarják törni az ambíciódat! A "kis" emberek mindig ezt teszik, de a nagyok éreztetik veled, hogy te is naggyá válhatsz" - Mark Twain
Nedudgi
aktív tag
Indexelés: Alapvetően könnyebbé teszi a keresést mert egy mező szerint sorbarendezi a rekordok azonosítóit (kb).
Kulcsok: azonosítják a rekordokat. Összekapcsolják a táblákat egy táblába idegen kulcs, egy másikban (a kapcsolt táblában elsődleges)
Mergelés, utána kéne néznem mert még nem csináltam.
DDL: Data Definition Language
DML: Data Manipulation Language (SQL az 2in 1)
Most látom hogy már egy napos a hozzászólásod, ha kell még segítség vegyél fe ICQ-ra. Segítek szívesen.
Relációk PL:
ADOSOK(azonosito, nev,.....)
KEZESEK(kezes_azon, nev, ados_azonosito....)
KEZESEK.ados_azonosito (idegen kulcs) -> ADOSOK.azonosito (elsodleges kulcs)
Remélem érthető lett
It took the computational power of three Commodore 64s to fly to the moon. It takes a 486 to run Windows 95. Something is wrong here. -- SC sig file UBUNTU - KDE - Rock'n'Roll
guest666
aktív tag
Szevasztok, egy SQL lekérdezésre lenne szükségem:
A CIKK tábla tartalma CIKKSZAM, CIKKNEV, CIKKCSOPORT, EGYSEGAR. Feladat: Cikkcsoportonként melyik termék a legolcsóbb ?
Köszi.
Goose-T
veterán
select min(EGYSEGAR), CIKKCSOPORT from CIKK group by CIKKCSOPORT
Valahogy így.
Eladó gitáros cuccok: http://tinyurl.com/94uy6j9b *** Rockbandám: https://fb.me/scharlotterhodes *** Gitárelektronikai műhelyem: https://www.fb.me/goosetgitar
guest666
aktív tag
Köszi, eddig oké, csak ez sajnos a legalacsonyabb árakat írja ki a feladat pedig hogy a legolcsób terméket írja ki, tehát a legalacsonyabb árhoz CIKKNEV-et, de MS Accesben sehogy tudom kiíratni...
Goose-T
veterán
Ja, akkor valahogy így próbálkozz:
select CIKK.CIKKNEV, MINARAK.AR from
(select min(EGYSEGAR) as AR, CIKKCSOPORT
from CIKK group by CIKKCSOPORT)
as MINARAK
join CIKK on MINARAK.AR = CIKK.EGYSEGAR
Access-el nem igazán lehet ilyesmit összekattintgatni, vagy nagyon nehézkes lenne.
Már 3x kellett átszerkesztenem, hogy rendesen látszódjon...
[Szerkesztve]
Eladó gitáros cuccok: http://tinyurl.com/94uy6j9b *** Rockbandám: https://fb.me/scharlotterhodes *** Gitárelektronikai műhelyem: https://www.fb.me/goosetgitar
sky77
aktív tag
Nothing
[Szerkesztve]
''Emberek, vessetek a mókusok elé!''
sky77
aktív tag
Szerintem az is fontos lenne, hogy abból a cikkcsoportból selectálja ki a legalacsonyabb árnak megfelelőt, amelyik cikkcsoportnak a legalacsonyabb áráról van szó, pl így:
select CIKK.CIKKNEV, MINARAK.AR from
(select min(EGYSEGAR) as AR, CIKKCSOPORT
from CIKK group by CIKKCSOPORT)
as MINARAK
join CIKK on MINARAK.AR = CIKK.EGYSEGAR
and CIKK.CIKKCSOPORT = MINARAK.CIKKCSOPORT
''Emberek, vessetek a mókusok elé!''
Goose-T
veterán
Igazad van, ezt elfelejtettem. Kár hogy megmondtad, mert így már guest666-nak semmin nem kell gondolkoznia.
Eladó gitáros cuccok: http://tinyurl.com/94uy6j9b *** Rockbandám: https://fb.me/scharlotterhodes *** Gitárelektronikai műhelyem: https://www.fb.me/goosetgitar
guest666
aktív tag
THX !
Elég komoly lett pedig milyen egyszerűnek tűnt...
sky77
aktív tag
Lehet, hogy mire beírtam, ráébredt magától
''Emberek, vessetek a mókusok elé!''
jeszi
tag
Sziasztok!
(Gyenge vagyok sql-ben)
Van egy lekérdezés egy Access adatbázisban:
SELECT O.ORVOS_ID, O.VEZNEV1, O.KERNEV1_1, O.KERNEV1_2, I.INTEZMENY_NEV, I.IRSZ, I.TELEPULES, I.CIM, OIS.TELEFON1, OIS.TELEFON2, OIS.MELLEK, ORR.MEGYE, ORR.ORSZAGRESZ
FROM ORVOS AS O, INTEZMENY AS I, ORVOS_INT_SW AS OIS, ORVOS_SZAKVIZSGA_SW AS OSS, SZAKVIZSGA AS SZ, TELEPULES AS T, ORSZAGRESZ AS ORR
WHERE O.ORVOS_ID=OIS.ORVOS_ID And OIS.INTEZMENY_ID=I.INTEZMENY_ID And O.ORVOS_ID=OSS.ORVOS_ID And OSS.SZAKVIZSGA_ID=SZ.SZAKVIZSGA_ID And I.TELEPULES=T.TEL_NEV And T.MEGYE=ORR.MEGYE And SZ.SZAKVIZSGA=PSZAKVIZSGA AND O.ACTIVE = 1
AND O.ORVOS_ID NOT IN
(SELECT E.ORVOS_ID FROM EREDMENY E
WHERE E.EREDMENY_TIP_ID IN (11, 12, 13))
ORDER BY ORR.ORSZAGRESZ, ORR.MEGYE, I.TELEPULES, I.CIM;
Ez borzasztó lassú, valahogy optimalizálni szeretném ezt a lekérdezést (vagy az adatbázist).
Tudna valaki segíteni? Az adatbázisról készítettem egy képet (táblák, kapcsolatok), azt el tudom küldeni e-mail-ben.
Nem félek a haláltól, majdcsak túlélem valahogy!
sky77
aktív tag
Ezt így hirtelen kicsit nehéz átlátni... Talán jobb lenne előről kezdeni a lekérdezést, úgy, hogy elmondod, mi a feladat (milyen adatokat szeretnél visszakapni) és ehhez milyen táblák (ill. mezők) állnak rendelkezésre. Biztosan lehetne ezt is optimalizálni, de valahogy nem visz rá a lélek, hogy átbogarásszam.
''Emberek, vessetek a mókusok elé!''
jeszi
tag
Küldhetek egy e-mailt?
Az adatbázisról készített képet szeretném elküldeni...
[Szerkesztve]
Nem félek a haláltól, majdcsak túlélem valahogy!
sky77
aktív tag
Természetesen.
''Emberek, vessetek a mókusok elé!''
sky77
aktív tag
Küldtem választ, de ide is leírom, biztos, ami biztos.
Szerintem, ha mondjuk left join-nal egy egyértelmű megfeleltetést tudsz felállítani a táblák között, kisebb adathalmazból fog dolgozni a select, így van rá esély, hogy gyorsabb lesz, ugyanis
select * from a,bvisszaadja az összes olyan elemet, ami mind a-nak, mind b-nek halmaza, úgy, hogy b összes eleméhe rendeli a összes elemét. Így aztán a where feltétel egy adott esetben akár óriási adathalmazból választja ki azokat a sorokat, akik a kitételnek megfelelnek.
Ha pl így oldod meg:
select * from a
left join b on b.x=a.x
tehát már az összekapcsolásban szerepel a ''where feltétel'', eleve kisebb adathalmazt kapsz, amit nem is kell tovább szűkíteni.
Próbáld meg így, hátha segít valamicskét. Addig is nézegetem a kódot, ha időm engedi.
Szerk.: Lehet, hogy célszerű lenne, ha kevesebb adatot hozna a select, így nem kéne annyi táblát összekapcsolni, s a bővebb információk csak akkor kerülnének lekérdezésre, ha a felhasználó úgy kívánja (pl. gombnyomásra). Már ha a feladat engedi, persze.
[Szerkesztve]
''Emberek, vessetek a mókusok elé!''
sky77
aktív tag
Így gyorsabb? Lefut egyáltalán? Én sajna nem tudom kipróbálni.
SELECT O.ORVOS_ID, O.VEZNEV1, O.KERNEV1_1, O.KERNEV1_2,
I.INTEZMENY_NEV, I.IRSZ, I.TELEPULES, I.CIM,
OIS.TELEFON1, OIS.TELEFON2, OIS.MELLEK,
ORR.MEGYE, ORR.ORSZAGRESZ
FROM ORVOS AS O
left join orvos_int_sw as ois on ois.orvos_id=o.orvos_id
left join intezmeny as i on i.intezmeny_id=ois.intezmeny_id
left join telepules as t on t.tel_nev=i.telepules
left join orszagresz as orr on orr.megye=t.megye
left join orvos_szakvizsga_sw as oss on oss.orvos_id=o.orvos_id
left join szakvizsga as sz on sz.szakvizsga_id=oss.szakvizsga_id
WHERE SZ.SZAKVIZSGA=PSZAKVIZSGA and O.ACTIVE = 1
AND O.ORVOS_ID NOT IN
(SELECT ORVOS_ID FROM EREDMENY
WHERE EREDMENY_TIP_ID IN (11, 12, 13))
ORDER BY ORR.ORSZAGRESZ, ORR.MEGYE, I.TELEPULES, I.CIM;
Talán egy-két táblát is össze lehetne vonni, első ránézésre nem teljesen tűnt indokoltnak, hogy külön táblában vannak adatok, persze lehet hogy tévedek.
Pl.:
orvos_szakvizsga_sw --> orvos
orszagresz --> telepules
[Szerkesztve]
[Szerkesztve]
''Emberek, vessetek a mókusok elé!''
jeszi
tag
Köszönöm, mindjárt kipróbálom!
Bocs, hogy csak most írok, de közben akadt egy-két feladatom
Nem félek a haláltól, majdcsak túlélem valahogy!
jeszi
tag
Az egész orvos adatbázist átraktam Access-ből MySql-be. Az átkonvertálást DBTools Manager Professional programmal végeztem.
Miért van az, hogy ugyan az a lekérdezés Access-ben kb. 5 másodpert, MySql-ben meg 15-20 perc?
Nem félek a haláltól, majdcsak túlélem valahogy!
sky77
aktív tag
Mysql-hez sajna a legkevésbé sem értek, viszont errefelé érdemes lehet körülnézni: Bővebben: link
Ezen belül is talán ez a legmegfelelőbb topic: Bővebben: link
Remélem tudnak segíteni.
''Emberek, vessetek a mókusok elé!''
sky77
aktív tag
Tulajdonképpen pont az inner join-okat szerettem volna kikerülni (select * from a,b is egy inner join), csak ugye az access nem akarta megenni. #44-ben leírt lekérdezést a mysql sem veszi be?
''Emberek, vessetek a mókusok elé!''
sky77
aktív tag
Látom már rátaláltál. Akkor nem szóltam...
''Emberek, vessetek a mókusok elé!''
Mai Hardverapró hirdetések
prémium kategóriában
- Eladó egy komplett PC (RTX 3070, Ryzen 5 3600, 32GB RAM)
- !! AKCIÓ !! 1 ÉV GARANCIA !! Független Apple Iphone 12 Mini 128GB.
- Samsung Galaxy S23 Ultra 512GB 5G Dual Sim + fólia, Spigen Rugged Armor tok
- Dolby Atmos / DTS:X hangprojektor HT-G700
- Bomba ár! Lenovo Miix 700-12ISK : m7-6G I 8GB I 256GB SSD I 12" QHD Touch I Cam I W10 I Garancia!