Hirdetés

2024. április 25., csütörtök

Gyorskeresés

Útvonal

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

Hozzászólások

(#451) Yutani válasza Jester01 (#450) üzenetére


Yutani
nagyúr

Köszönöm a választ. Akkor marad az Excel bűvészkedés. :)

#tarcsad

(#452) Jester01 válasza Yutani (#451) üzenetére


Jester01
veterán

Tulajdonképpen ha van string összefűzésre aggregáló függvény akkor meg lehet oldani egy GROUP BY kitétellel. Nem mondtad milyen adatbázis, mysql-ben van ilyen GROUP_CONCAT néven. MS SQL-ben és Oracle alatt is lehet rá workaroundot csinálni gugli szerint. Úgy látszik kicsit elhamarkodottan állítottam, hogy nem lehet. :B

Jester

(#453) Orc


Orc
senior tag

A segítségeteket szeretném kérni. PL/SQL függvényt kellene írnom, ami egy paramétert kap és megnézi, hogy egy adott tábla mely sorában szerepel ez az érték és visszaad egy másik értéket abból a sorból.

negyzet tábla:

szamok negyzetek
1..............1
2..............4
3..............9

CREATE OR REPLACE FUNCTION szam(num number) RETURN number IS
temp NUMBER(6);
BEGIN
temp := (select negyzetek from negyzet
where szamok = num);
return(temp);
END;
/
SELECT szam(3) FROM dual;

Ez ugye nem jó, hibát ad, holott 9-et kéne vissza adnia. Előre is köszönöm.

Kinyomom a szemed, eltöröm a lábad... aztán mehetsz amerre látsz!

(#454) Orc válasza Orc (#453) üzenetére


Orc
senior tag

Megválaszolom magamnak:

BEGIN
SELECT negyzetek INTO temp
FROM negyzet
WHERE szamok = num;
END;
/

Kinyomom a szemed, eltöröm a lábad... aztán mehetsz amerre látsz!

(#455) sonar


sonar
addikt

Sziasztok,

Olyan lekérdezési lehetőség van, hogy mondjuk nekem az utolsó X értékre van szükségem arra szűrjön?
Az az nekem pl.: top 100 parancs forditottjára lenne szükségem.

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#456) VladimirR válasza sonar (#455) üzenetére


VladimirR
nagyúr

a rendezes megforditasa nem jo?

(#457) sonar válasza VladimirR (#456) üzenetére


sonar
addikt

Bocsika azt hogyan kell?
Kezdő vagyok :B

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#458) vakondka válasza sonar (#457) üzenetére


vakondka
őstag

Létezik olyan a (mysql-ben) INSERT ami egyben SELECT is ?

A megoldandó probléma a következő:
adott egy tábla aminek products_description a neve
ebből le kellene kérdezni minden sort ahol a language_id=4
utána ennek az eredményét újra beszúrni a táblába, de úgy hogy minden új sornál a language_id az 5 legyen

Meg lehet ezt valósítani mysql-ben, vagy írjak rá php progit ? :F

https://toptarget.hu - Online Marketing Ügynökség

(#459) VladimirR válasza sonar (#457) üzenetére


VladimirR
nagyúr

mi az eredeti lekerdezes? igy vaktaban nem igen tudok mondani csak annyit, hogy ha valami szerint rendezel a lekerezesnel, akkor annak iranya megfordithato, s akkor a top 100 lesz az, ami egyebkent az utolso 100 lenne

pl.:
-- 100 legmagasabb fizetessel rendelkezo alkalmazott (csokkeno rendezes es ez elso 100-at valasztjuk)
select * from alkalmazottak order by fizetes DESC limit 100;
-- 100 legkisebb fizetessel rendelkezo alkalmazott (novekvo rendezes es az elso 100-at valasztjuk)
select * from alkalmazottak order by fizetes ASC limit 100;

[ Szerkesztve ]

(#460) VladimirR válasza vakondka (#458) üzenetére


VladimirR
nagyúr

hozz letre egy uj tabat (temp_tabla), melynek szerkezete megegyezik a product_description tablaeval

-- ideiglenes tabla kiuritese, hatha volt benne adat korabban
truncate table temp_tabla;
-- 4-es language_id-ju sorok lekerdezese a product_description tablabol es beillesztese a temp_tabla tablaba
insert into temp_tabla select * from product_description where language_id = 4;
-- temp_tabla-ban a language_id-k atallitasa 5-re
update temp_tabla set language id = 5;
-- lekerdezes a temp+_tabla tablabol es beillesztese a product_description tablaba
insert into product_description select * from temp_tabla;

(#461) sonar válasza VladimirR (#459) üzenetére


sonar
addikt

Pusztán elméletileg kérdeztem.
Igen, ha vmi szerint rendezem akkor már tudom szűrni.
Azért kössz

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#462) sonar


sonar
addikt

Sziasztok,

Van a következő lekérdezésem:

SELECT t.id, t.unitid, t.name, t.jigid, t.creationtime, t.status, mf.name, mf.failurecode, mf.value, mf.hilim, mf.lolim,
mf.status
FROM ffTest t
left join ffserialnumber sn on sn.unitid=t.unitid
left join ffmeasurementdetailfail mf on mf.testid=t.id
left join ffmeasurementdetailpass mp on mp.testid=t.id
where
t.creationtime between '2009-05-18 06:00:00' and '2009-05-19 06:00:00'
and t.description='RF Test'
and t.status='Failed'
and mf.status='Failed'
order by 2

Eredmény:

id unitid name jig creationtime status name failurecode value hilim lolim status
20026011 2500706 RF Test 3 2009.05.18 15:25 Failed T3 AGC +7 T3 AGC +7 -29 -62 -92 Failed
20021204 2500819 RF Test 3 2009.05.18 6:57 Failed QAM AGC QAM AGC -10 25 -5 Failed
20021231 2503154 RF Test 4 2009.05.18 7:01 Failed Tuner 1st IF Center Frequency Tuner 1st IF Center Frequency -1 1342 1098 Failed

És nekem csak az kellene ahol a unitid kétszer fordul elő.
Hogyan tudnám szűkíteni a keresést?

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#463) VladimirR válasza sonar (#462) üzenetére


VladimirR
nagyúr

hogy erted, hogy "a unitid ketszer fordul elo"?

(#464) sonar válasza VladimirR (#463) üzenetére


sonar
addikt

A kapott eredményeben többször előfordul ugyanaz az unitid

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#465) Jester01 válasza sonar (#464) üzenetére


Jester01
veterán

group by unitid having count(*) > 1 :F

Jester

(#466) vakondka válasza VladimirR (#460) üzenetére


vakondka
őstag

Köszi szépen a segítséget ! :R :C
Először nem működött, de aztán rájöttem, hogy én szúrtam el... :U

Van valami egyszerű módszer arra, hogy saját tárhelyen belül egyik adatbázis bizonyos adattábláját átmásoljam egy másik adatbázisba ?
Az a baj, hogy elkezdtem írni egy ilyen scriptet php-mysql-ben, de nagyon hosszúra sikeredett és állandóan elszáll timeout-al mert sok rekord van (és 64 tábla).

Elég lenne egy alapötlet, vagy egy link is... :U

Előre is köszi !
:R

https://toptarget.hu - Online Marketing Ügynökség

(#467) VladimirR válasza vakondka (#466) üzenetére


VladimirR
nagyúr

hasonloan az elozohoz:
1: letrehozod a masik adatbazisban az azonos szerkezetu tablat
2: insert into ujadatbazis.ujtabla select * from regiadatbazis.regitabla;
3: esetleg drop regiadatbazis.regitabla;

(#468) L3zl13 válasza vakondka (#466) üzenetére


L3zl13
nagyúr

Adatbáziskezelőben export/import?

Aki hülye, haljon meg!

(#469) vakondka válasza VladimirR (#467) üzenetére


vakondka
őstag

Igen ez phpmyadminban biztosan tökéletes (meg ott van másolás menüpont is), de nekem php-val kellene megoldanom, mert sok (64) tábla van, 3 adatbázison kell megcsináljam egyszerre és nem szeretném egyesével végigkattintgatni...
Ott meg muszáj adatbázist kiválasztani a query előtt...vagy rosszul tudok valamit ? :F

mármint ez kötött, nem ?

$db="adatbazis1";
$conn = mysql_connect('localhost', 'root', '');
mysql_select_db($db, $conn);
mysql_query($sql, $conn);
mysql_close($conn);

szóval csak azt nem értem, hogyha kiválasztottam az adatbazis1-et, akkor hogy tudok írni adatbazis2-be ? vagy ez műxik tényleg, csak én nem tudtam ezt eddig ?

Bocs az értetlenségemért...
:B

[ Szerkesztve ]

https://toptarget.hu - Online Marketing Ügynökség

(#470) L3zl13 válasza vakondka (#469) üzenetére


L3zl13
nagyúr

Még nem használtam így, de ha minden igaz, akkor amennyiben a felhasználó rendelkezik a megfelelő jogokkal mindkét adatbázishoz, akkor elhagyhatod a mysql_select_db-t, és elég csak a queryben megadnod, hogy melyik tábla melyik adatbázisban található az adatbázis.tábla formátumot használva.

Aki hülye, haljon meg!

(#471) cucka válasza vakondka (#469) üzenetére


cucka
addikt

1. Ha egyszerűen csak át akarod pakolni az adatokat, akkor használd a phpmyadmin beépített export/import funkcióját. (Amennyiben nem túl nagy az adatbázis az import-hoz)

2. Ha feltétlenül programot akarsz rá írni, akkor jó tudni, hogy egy táblára úgy is hivatkozhatsz, hogy adatbázisnév.táblanév. Ekkor ugye nem kell a mysql_select_db, mert anélkül is meg fogja találni az adatbázis szerver a táblákat.
A másik lehetőség, hogy két adatbázis kapcsolattal oldod meg a problémát, ez pl. sokkal rugalmasabb, mert akár két teljesen különböző adatbázis szerverrel is működik a dolog..

(#472) vakondka válasza cucka (#471) üzenetére


vakondka
őstag

Beraktam programba és hibátlanul megy, köszi a tippet ! :R
Tiszta hülyeség, mert tudtam, hogy lehet rá így hivatkozni, de azt hittem, hogy csak a phpmyadminból lehet így, mert a php-nál kötelező adatbázist választani...hát most kiderült hogy nem éppen így van...megint okosabb lettem :))

https://toptarget.hu - Online Marketing Ügynökség

(#473) CaNNa3IS válasza Yutani (#451) üzenetére


CaNNa3IS
senior tag

Access- ben egy crosstab queryvel szerintem.

Stay up Stay humble Ride hard Get stoked

(#474) lazlo8


lazlo8
tag

segítséget kérek mer lassan feladom!
Ms acces van 3 oszlop oszlop1 BMW3, BMW5 BMW6 oszlop 2 akcio -10% 20% oszlop 3 érvnyes 08 jan1 09 jan2 hogy lehetne lekérdezni h szerepeljen benne a ami nem változott ill ami változott de abbol csak a legujjab??
Bmw 3 10% 08jan1
BMw3 -20% 09jan5
Bmw5 22% 06jan3
bmw 6 55% 09jan4
Tehát olyan lekérdezés kellene amibe szerepel a bmw 5,6 ill a frisseb BMw 3 (-20% érvényes 09jan5)(legelső sor nemkell

[ Szerkesztve ]

(#475) ArchElf válasza lazlo8 (#474) üzenetére


ArchElf
addikt

Két query-vel:
Q1

SELECT T1.Field1, Max(T1.Field3) AS Field3
FROM T1
GROUP BY T1.Field1;

Q2

SELECT T1.Field1, T1.Field2, T1.Field3
FROM Q1 INNER JOIN T1 ON (Q1.Field3 = T1.Field3) AND (Q1.Field1 = T1.Field1);

AE

Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]

(#476) lazlo8


lazlo8
tag

thx

(#477) retes


retes
aktív tag

Sziasztok!

Olyan kérdésem lenne, hogy adott egy Windows 2003 szerver MS SQL szerver 2000-el. A feladat annyi lenne, hogy ezt az SQL-t át kéne vinni egy másik 2003 szerver-re. Van e olyan megoldás, hogy ingyenes monjuk SQL express szerverrel menjen mert maga az adatbázis nincs 500mega sem? És ha igen tudtok e segíteni, mert én most feltettem egy MS 2008 SQL szervert, de valahogy nem igazodok ki rajta nekem csak annyi kellene, hogy a kimentett adatbázisok fussanak az új szerveren és kész.

Tudnátok segíteni ebben, mert az a 2000 és a 2008 közt igen sok különbséget vélek felfedezni...

Előre is köszi mindenkinek!

A tudás mindenkié!!!

(#478) retes


retes
aktív tag

Sziasztok!

Közben nagyon sokat okosodtam hála google.com barátunknak. Akit érdekel, hogy hogy csináltam írjatok csak és utbaigazítok mindenkit. Google- segíségével ment is a dolog kb 20 perc alatt átvittem 10 adatbázist. A másolás tovább tartott.. :)

A tudás mindenkié!!!

(#479) retes


retes
aktív tag

Sziasztok!

Sajnos nem nagyon tudok egyről a kettőre jutni a google-el sem már. Az lenne a probléma, hogy adott egy egyedi fejlesztésű program aminek az sql adatbázisát hordozgattam jobbra balra. Van egy kezelő szerve amit úgy lehet elérni, hogy ODBC szolgáltatásoknál hozzáadom az sql szervert a megfelelő autentikációval majd meghívja az accest. Teszt esetén mikor bekonfolom a ODBC szervert akkor a végén azt mondja, hogy a csatlakozás létrejött teszt alapon belépett, de mikor szeretném a programot indítani akkor ODBC hibára utalva azaz ODBC driver re hivatkozva nem enged csatlakozni. Lehet ez azért mert MS SQL2008 szervert használok vagy csak simán a programnak nem teljesül a kritériuma?

Vagyis csak azért mondtam el mindezt mert fogalmam sincs, hogy milyen úton lehetne elindulni. Abban tudnátok segíteni, hogy az ODBC tulajdonképp mire is használatos, mert ah ezt megtudom akkor kicsit lehet közelebb jutok a megoldáshoz. Vagy még az jutott eszembe, hogy lehetséges, hogy az adatbázissal van a baj?

Előre is köszönöm mindenkinek a segítséget!

Retes

A tudás mindenkié!!!

(#480) CaNNa3IS válasza retes (#479) üzenetére


CaNNa3IS
senior tag

Szevasz

ODBC-vel belinkelt táblákról van szó vagy runtime kapcsolódik?
Ha az első akkor linkeld újra vagy frissitsd be a linket.
Nézd meg hogy a linkelt táblát tudod e olvasni.
Ugyanaz az adatbázis és a server neve is ?
Jogosultságok ? Ha runtime kapcsolódik akkor pl Usernam :sa és a jelszó ugyanaz kell legyen.

Stay up Stay humble Ride hard Get stoked

(#481) retes válasza CaNNa3IS (#480) üzenetére


retes
aktív tag

Az a baj, hogy ennyire nem értek hozzá, de szerintem nem run time. Ez egy egyedi fejlesztéső program amit az anyavállalat készített és azt az instrukciót adták, hogy amikor szervert váltok akkor arra kell figylnem, hogy az adatbázis átmenjen, és a fileszervr utána minden értelemszerűan fog menni. Az eredeti szerver esetén a bekonfig az egyszerűen megy, hozzáteszem, hogy belinkelt tábláról lehet szó. AZ ODBC konfig esetén local még a teszt is megy, de ha másik gépról próbálkozom már nem is jutok el a tasztig. MI lehet az összefüggés, esetleg az SQL Express az ami megzavarja?

A tudás mindenkié!!!

(#482) CaNNa3IS válasza retes (#481) üzenetére


CaNNa3IS
senior tag

Tűzfal? kikapcs vagy állitsd be.
Linkelni tudsz táblát az sql serverről?

Stay up Stay humble Ride hard Get stoked

(#483) retes válasza CaNNa3IS (#482) üzenetére


retes
aktív tag

Tűzfal ezen a gépen nincs még csak vírusírtó sem. Tudnál segíteni abban, hogy hagyan tudok linkelni? Könnyen meg lehet, hogy ez a gond...

A tudás mindenkié!!!

(#484) CaNNa3IS válasza retes (#483) üzenetére


CaNNa3IS
senior tag

Milyen alapú programot használsz?
Linkelni pl access-ben tudsz.

Stay up Stay humble Ride hard Get stoked

(#485) retes válasza CaNNa3IS (#484) üzenetére


retes
aktív tag

Szia,

Bocsi, hogy csak most, de nem tudtam eddig írni. Hát a baj az annyi, hogy amikor elindul akkor is egy access-t hív meg és abban ühyködik. És a program el is indeul, de ODBC kapcsolódási hábát mutat annak ellenére, hogy egy sql server 2000hez meg azonnal csatlakozik, így hát feltételezem, hogy az új szerevern van valami amiért ez nem megy. Kerestem ODBC driver a 2008-2005 SQL Serverhez, de nem nagyon találtam...

Nem tudom hol lenne jó keresni a hibát. Aki meg a programot csinálta egy német srácc és most épp 3 gétig nem lesz elérhető mert nyaral...

A tudás mindenkié!!!

(#486) Szkeptikus


Szkeptikus
tag

Sziasztok,

Az alábbi problémával kapcsolatban kérném a segítségeteket:

Van egy 'rendelesek' tábla a következő mezőkkel:

rendeles_id
ügyfel_id
kezbesitesi_cim_id
rendeles_dte

Azon rendelések azonosítóit és dátumait szeretném leválogatni, amelyekre igaz, hogy a hozzájuk tartozó ügyfél legalább 2 különböző címre rendelt.

Azaz ha "A" ügyfélnek van 73 db rendelése, de mind azonos kiszállítási címmel szerepel, akkor ne kerüljön be a leválogatásba a rendeléseinek azonosítója, ha "B" cégnek van 2 rendelése, amelyeknél a kiszállítási cím eltérő, akkor mindkét rendelési id kerüljön be, ha pedig "C" cégnek van 81 azonos címre és 1 db eltérő címre rögzített megrendelése, akkor szintén mind belekerüljön.

Előre is köszönöm! :R

(#487) PazsitZ válasza Szkeptikus (#486) üzenetére


PazsitZ
addikt

Ha minden igaz ennek azt kell kidobnia:

SELECT rendeles_id, ugyfel_id, rendeles_dte, count(DISTINCT kezbesitesi_cim_id) as darab FROM rendelesek
GROUP BY ugyfel_id HAVING darab>=2

[ Szerkesztve ]

- http://pazsitz.hu -

(#488) Szkeptikus válasza PazsitZ (#487) üzenetére


Szkeptikus
tag

Köszönöm!

(#489) Louloudaki


Louloudaki
aktív tag

rendeles tábla:
azonosito=a rendelés azonosítója
termek_id=a termék idja
darab=hányat rendeltek

pl
xyz | 26 | 2
xyz | 17 | 1
abc | 26 | 5

hogy kapom meg a 2 legtöbbet rendelt terméket? ugye össze kéne adogatni a rendelt darabszámot termékenként aztán a 2 legnagyobbat megkeresni de nekem ez már bonyolult :U

(#490) Gyuri16 válasza Louloudaki (#489) üzenetére


Gyuri16
senior tag

SELECT termek_id FROM tabla GROUP BY termek_id ORDER BY sum(darab) DESC LIMIT 0, 2

ha jol ertettem az azonosito itt nem jatszik szerepet, akkor igy kb jo lesz

Nem vagyok egoista, csak uborkagyalu!

(#491) Louloudaki válasza Gyuri16 (#490) üzenetére


Louloudaki
aktív tag

köszi megpróba :R

(#492) kukahapci


kukahapci
csendes tag

Üdv!
Segítség kellene: Adott egy Vista gép. Telepítettem egy Iktató programot Microsoft SQL Server 2005 + Iktató-val. Ez tökéletesen működik. Kellene egy mésik programot is telepítenem aminek szintén szüksége van az SQL serverre, a telepítés során a következő hibaüzenetet kapom:
Run-time error '-2147467259 (80004005) [DBNETLIB][Connection Open (connect().] Az SQL Server nem létezik, vagy a hozzáférés megtagadva.
Én úgy látom, hogy az SQL Server fut, és rendszergazdaként próbálom a telepítést.
A Jótanácsokat megköszönném!

(#493) kampi_


kampi_
csendes tag

Sziasztok!

SQL téren nagyon kezdő vagyok, ezért a segítségetek kérném. Van két táblám(a mezőneveket hirtelen így fejből nem tudom sajnos). A táblák tartalma folyamatosan változik. Hogyan tudom összehasonlítani a két tábla tartalmát úgy, hogy kiírja nekem a csak a külnbségeket. Tehát ha pl az A táblába bekerült egy új rekord akkor csak azt írja ki, ha pl csak a B táblába került be egy új rekord akkor csak azt írja ki? Tehát nekem tulajdonképpen csak azok a rekordok kellenek amik nem egyeznek meg. Az A táblában egy mezővel több van mint a B-ben. Én az except parancsot próbáltam használni,de nem igazán jött össze.

Legutoljára ezt hasnáltam, de ez mindent visszaadot csak azt nem ami kellett volna :)

select 'table1' as tblName, * from
(select * from table1
except
select * from table2) x
union all
select 'table2' as tblName, * from
(select * from table2
except select *
from table1) x

Tudja valaki hogy nézhet ki a script?

Előre is köszönöm!

kampi

(#494) Khelben válasza kampi_ (#493) üzenetére


Khelben
nagyúr

Én még csak most járok tanfolyamra :) de 2 select-tel csinálnám:

select * from a
where not exists (select * from b where a.mezo1=b.mezo1 and a.mezo2=b.mezo2....)

majd ugyanez b-vel

select * from b
where not exists (select * from a where a.mezo1=b.mezo1 and a.mezo2=b.mezo2....)

ha van egy kulcs, ami alapján tudsz hasonlítani, akkor értelemszerűen csak 1 mezőt kell vizsgálni.

(#495) DBob


DBob
őstag

Yo.
Megkérdezlek titeket, hátha tudtok segíteni.

Szóval lenne egy access adatbázis. Azon belül 4 tábla. Eléggé speciálisak az igények (az információk különböző beérkezése miatt), így nem lehetett a mostani állapotnál tovább egyszerűsíteni úgy érzem. De a lényeg:

Vannak berendezések, azokban alkatrészek, és ez az egész gépek szerint csoportosítva. A feladatok többsége kész, ám egy még megoldásra vár.
Szeretnénk mondjuk olyat, hogy kiválasztok egy berendezés csoportot, és azon belül az összes alkatrészt először pl törlöm, majd a megkapott valós információkkal feltöltöm.

Makróval, űrlapon oda már eljutottam, hogy legördülőlistából kiválasztom a kellő csoportot, majd gombra ciklus kikeresi mindet. És itt megáll a tudomány. Másik táblából a géphez tartozó összes rekordot hogy törlöm? Egyáltalán, sql szinten hogyan hivatkozok rá visual basic alól? Itt van a probléma részemről egyelőre.

Ha valaki tudja a megoldást, ne tartsa magában.
üdv

(#496) SQLkerdes


SQLkerdes
csendes tag

Sziasztok, van egy bosszantó problémám és a neten nem leltem semmit ezzel kapcsolatban.

Háttér:
szoftver: SQL Server Management Studio Express (tudjátok amit le lehet tölteni és installálni, korlátozott funcionalitás, zéró ár).
Egyetlen gépen fut a teljes cucc, szóval a Dell-emen fut a szerver is meg itt írom a query-ket is.
Statikus adatbázis tábláira írok lekérdezéseket (szal a táblák meg az adatbázis tartalma nem változik menet közben)

Probléma: írok query-ket amik eredményét szeretném más query-k FROM részében használni, de nem tudom hogy kell.

Access-ben ez nagyon egyszerű, a query-t úgyanúgy kell használni mintha egy tábla lenne, de MS Server alatt egyszerűen nem látom a query-ket.
Le tudom menteni a query-jeimet (nem az eredményként létrejövő adattáblát, hanem a query-t magát), de itt végetér a tudományom.

Meg tudnám csinálni, hogy 'SELECT ... INTO ujtabla' utasítással fizikailag is létrehozom a query-k eredményét, de sok query-m van és félek durván elszállna az adatbázis mérete.

Szintén be tudnám copy-paste-lni a query SQL kódját a FROM részbe (subquery), de az meg hibalehetőség, meg egy idő után bonyolult (pld ha 5-6 táblát meg query-t próbálok join-olni).

Access-ben is megpróbálhatnám, de ott nincs FULL OUTER JOIN, amire meg nagy nagy szükségem van (illetve van, csak bonyi a jobbos meg balos joinokat összefűzni).

Szóval a legjobb megoldás a query-k használata lenne, de nem tudom hogy kell.

Bármi ötletet hálásan fogadok!

(#497) ArchElf válasza SQLkerdes (#496) üzenetére


ArchElf
addikt

Access SQL: Query = SQL: View

AE

Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]

(#498) SQLkerdes


SQLkerdes
csendes tag

Látom, hogy a te kung-fud, jobb mint az én kung fum, de nem értem mit mondasz...

(#499) ArchElf válasza SQLkerdes (#498) üzenetére


ArchElf
addikt

A standard SQL szintakszis szerint VIEW-nak hívják azt, amit te az Access-ből QUERY-nek ismersz: http://en.wikipedia.org/wiki/View_%28database%29

AE

Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]

(#500) drkbl válasza SQLkerdes (#496) üzenetére


drkbl
őstag

Szerintem a derived table, amit keresel: SELECT ... FROM (SELECT ...) AS x(..)

SELECT
e.EmployeeID, oe.NumOrders, oe.MaxDate, e.ReportsTo AS ManagerID,
om.NumOrders, om.MaxDate
FROM
Employees AS e
INNER JOIN
(SELECT EmployeeID, COUNT(*), MAX(OrderDate)
FROM Orders
GROUP BY EmployeeID) AS oe(EmployeeID, NumOrders, MaxDate)
ON e.EmployeeID = oe.EmployeeID
LEFT JOIN
(SELECT EmployeeID, COUNT(*), MAX(OrderDate)
FROM Orders
GROUP BY EmployeeID) AS om(EmployeeID, NumOrders, MaxDate)
ON e.ReportsTo = om.EmployeeID

További lehetőségek: Common Table Expressions

Útvonal

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