Hirdetés

2024. március 28., csütörtök

Gyorskeresés

Útvonal

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

Hozzászólások

(#201) aton-hawk


aton-hawk
tag

Sziasztok!
Egy újabb kérdés..:
Ezek a táblák vannak:
ANYAG {azonosító, a_név, mért_egys, készlet, átl_ár}
BESZERZÉS {dátum, azonosító, mennyiség, be_ár, áfa_sz}
TERMÉK {kód, t_név, akt_ár}
MINŐSÍTÉS {alsó, szöveg}
SZERKEZET {kód, azonosító, menny}
ÁRVÁLT {kód, mikor, régi_ár}
PARTNER {pkód, p_név, irsz, hely, utca, tel}
REND_FEJ {rendszám, kelt, hat_idő, pkód, végösszeg}
REND_TÉTEL {rendszám, kód, r_menny, kész}
ENGEDMÉNY {határ, százalék}

És ez pedig a kérdés: Kik azok a partnerek, akik legalább 1 éve nem rendeltek.
Remélem ebben még tudtok segíteni.
Előre is köszi.

''A tudatlant lehetetlen érvekkel meggyõzni.'' William Gibbs McAdoo

(#202) Jester01 válasza aton-hawk (#201) üzenetére


Jester01
veterán

Gondolom a REND_FEJ táblából lehet ezt lekérdezni:
SELECT pkód FROM REND_FEJ GROUP BY pkód HAVING MAX(kelt) < NOW() - INTERVAL 1 YEAR

(ez így mysql szintaxis)

Ha a pkód-on kívül egyéb adatok is kellenek akkor azt nyilván a PARTNER táblából lehet megkapni.

[Szerkesztve]

Jester

(#203) aton-hawk válasza Jester01 (#202) üzenetére


aton-hawk
tag

aha..oks..köszi a segítséget ;)

''A tudatlant lehetetlen érvekkel meggyõzni.'' William Gibbs McAdoo

(#204) concret_hp


concret_hp
addikt

van egy ilyen lekérdezésem:

SELECT COUNT(r_szam) AS darabszam
FROM gyart_rendelesek
WHERE rend_ido > add_months(sysdate,-12)
GROUP BY vevo;


ez a vevők rendelésszámát adja vissza és van egy ilyen:

SELECT gyart_vasarlok.vevo, gyart_vasarlok.adoszam, gyart_vasarlok.letrehozva
FROM gyart_vasarlok
WHERE ... ;


ez pedig a vásárlóim adatait kérdezi le, akik bizonyos feltételnek megfelelnek. azt szeretném, hogy mondjuk azok a vásárlók legyenek kilistázva akiknek 2 megrendelése van de ha ezt írom:

SELECT gyart_vasarlok.vevo, gyart_vasarlok.adoszam, gyart_vasarlok.letrehozva
FROM gyart_vasarlok
WHERE (SELECT COUNT(r_szam) AS darabszam
FROM gyart_rendelesek
WHERE rend_ido > add_months(sysdate,-12)
GROUP BY vevo)=2;


az ezt írja:
WHERE (SELECT COUNT(r_szam) AS darabszam
*
Hiba a(z) 3. sorban:
ORA-01427: single-row subquery returns more than one row

szóval valaki mondja meg plz, hogy hogyan kell :U

vagy fullba vagy sehogy :D

(#205) Jester01 válasza concret_hp (#204) üzenetére


Jester01
veterán

Összakapcsolod a 2 táblát (join), csoportosítasz vevő szerint és szűrsz a darabszámra (HAVING COUNT(*) = 2)

Jester

(#206) Drizzt


Drizzt
nagyúr

Hogy lehet korábbi constraintet módosítani, illetve újat hozzáadni? Elvileg az Alter table xxx add xxx lenne a forma, nem? De valami baja van mindig. :S

I am having fun staying poor.

(#207) Lortech válasza Drizzt (#206) üzenetére


Lortech
addikt

alter table tablanev add constraint attributumnev,...
A ''valami baja van mindig'' kellene nekünk (hibaüzenet?), lehet, hogy már tartalmaz olyan sorokat az oszlop, amik kizárják azt, hogy ráhúzd az egyedi megszorítást.

Thank you to god for making me an atheist

(#208) Drizzt válasza Lortech (#207) üzenetére


Drizzt
nagyúr

Megoldottam.

I am having fun staying poor.

(#209) Drizzt


Drizzt
nagyúr

Viszont teszek fel kérdést. Van két tábla: filmek, s kölcsönzések, a lekérdezés a következő lenne: 1 évnél nem régebben kivett filmek lekérdezése, illetve amit nem vettek ki, annál soha kiírása. decode-ot, vagy nvl-t kéne használni.
Decodenál lehet olyan feltételt megadni, hogy valaminél nagyobb legyen a kifejezés? Ha igen, hogy?
Mert így nem jó:
decode(borrows.dateofcreation, null, 'SOHA',
>sysdate-365, borrows.dateofcreation)

(mondjuk nem lep meg, de mit lehet ilyenkor kezdeni?)

I am having fun staying poor.

(#210) rdi válasza Drizzt (#209) üzenetére


rdi
veterán

acces lekérdezések szerkesztőlécen utána nézetváltás sql nézetre (bár nem biztos, hogy szabályos lesz)

igaz, ahogy látom Ti kódból nyomjátok :))

[Szerkesztve]

Fej! Tor! Potroh!

(#211) Jester01 válasza Drizzt (#209) üzenetére


Jester01
veterán

Izé, ha azokat kell kiírni amiket egy évnél nem régebben vagy soha nem vettek ki, akkor úgyis van where szûrés, szóval a decode-ban már nem kell vele foglalkozni. Ha a dateofcreation dátum típusú, akkor azt lehet, hogy még szöveggé is illene konvertálni.

Kb valami ilyesmire gondoltam:
SELECT ... DECODE(borrows.dateofcreation, NULL, 'SOHA', TO_CHAR(borrows.dateofcreation)) ... WHERE borrows.dateofcreation IS NULL OR borrows.dateofcreation > sysdate - 365

Jester

(#212) Drizzt válasza Jester01 (#211) üzenetére


Drizzt
nagyúr

Köszi, tökéletes. ;)

I am having fun staying poor.

(#213) Drótszamár


Drótszamár
őstag

Sziasztok!

2 adatbázis (nem adattábla) között lehet valahogy adatokat cserélgetni.

Vagy csak itt a táblanevek helyett úgy kell hogy adatázis.táblanév ?

( 2b || !2b ) az itt a kérdés...

(#214) Jester01 válasza Drótszamár (#213) üzenetére


Jester01
veterán

Ez adatbáziskezelõtõl függ.

Jester

(#215) Drótszamár válasza Jester01 (#214) üzenetére


Drótszamár
őstag

linuxos mysql tud ilyet?

( 2b || !2b ) az itt a kérdés...

(#216) Drizzt


Drizzt
nagyúr

Ez alapján kéne még nekem lekérdezni a members.name-t is:
SELECT min(members.dateofbirth), videos.title
from borrows, videos, members
WHERE borrows.video=videos.videoid AND borrows.member=members.memberid
GROUP BY videos.title;

De nincs ötletem hogyan. Annyi biztos, hogy join kell, de hogyan?

I am having fun staying poor.

(#217) Drótszamár válasza Drizzt (#216) üzenetére


Drótszamár
őstag

Szertinem ennnyi:

SELECT min(members.dateofbirth), videos.title , members.name
from borrows, videos, members
WHERE borrows.video=videos.videoid AND borrows.member=members.memberid
GROUP BY videos.title;


[Szerkesztve]

( 2b || !2b ) az itt a kérdés...

(#218) rdi válasza Drótszamár (#215) üzenetére


rdi
veterán

meg kő hozzá valami sql szerver is, nem?

Fej! Tor! Potroh!

(#219) Jester01 válasza Drótszamár (#215) üzenetére


Jester01
veterán

Mysql-re egyelõre csak ezt találtam: [link]

Jester

(#220) Drótszamár válasza rdi (#218) üzenetére


Drótszamár
őstag

Ezt most nem értem. :F

( 2b || !2b ) az itt a kérdés...

(#221) Jester01 válasza Drótszamár (#217) üzenetére


Jester01
veterán

Nem lesz jó a group by miatt.

Jester

(#222) rdi válasza Drótszamár (#220) üzenetére


rdi
veterán

[link]
ilyesmire gondoltam
ja tényleg mySql is :)

[Szerkesztve]

Fej! Tor! Potroh!

(#223) Drizzt válasza Jester01 (#221) üzenetére


Drizzt
nagyúr

Pontosan, az csak akkor működne, ha nem lenne ott a min.

I am having fun staying poor.

(#224) Drótszamár


Drótszamár
őstag

Php online súgójában ezt találtam:

You don't even have to select the database for each connection.

mysql_query(''SELECT * FROM database1.table'',$dbh1);
mysql_query(''SELECT * FROM database2.table'',$dbh2);

Uh valószínű menni fog a dolog. Ha nem akkor majd egy script megoldja.

( 2b || !2b ) az itt a kérdés...

(#225) Jester01 válasza Drizzt (#223) üzenetére


Jester01
veterán

Szóval marad az al-select.

Jester

(#226) Jester01 válasza Drótszamár (#224) üzenetére


Jester01
veterán

Ja az megy. Azt hittem másik szerverhez kell kapcsolódni. :B

Jester

(#227) Drizzt válasza Jester01 (#225) üzenetére


Drizzt
nagyúr

Nem boldogulok ezzel sehogy sem. :(

I am having fun staying poor.

(#228) Blaise


Blaise
veterán

üdv !

Tudtok ajánlani valami neten fellelhető jófajta sql doksit kezdőknek ? :R

(#229) Jester01 válasza Drizzt (#227) üzenetére


Jester01
veterán

SELECT title, name FROM videos, members, borrows WHERE videos.videoid = borrows.videoid AND members.memberid = borrows.memberid AND members.dateofbirth = (SELECT min(members.dateofbirth) FROM borrows, members WHERE borrows.videoid=videos.videoid AND borrows.memberid = members.memberid)

Ezzel az lehet még a baj, hogy több azonos korú tag is kivehette a filmet, a fenti lekérdezés ilyenkor visszaadja mindet. Ha csak egy kell, akkor még egy group by-t lehet a végére akasztani.

Érdekességképpen egy hack megoldás, amibe nem kell al-select:

SELECT SUBSTR(MIN(TO_CHAR(members.dateofbirth, 'YYYY-MM-DD') || members.name), 11), videos.title
from borrows, videos, members
WHERE borrows.video=videos.videoid AND borrows.member=members.memberid
GROUP BY videos.title;

Jester

(#230) [HUN]Zolee


[HUN]Zolee
senior tag

Üdv.

Az lenne a gondom hogy szeretnék egy ilyen frissítő lekérdezést csinálni :

Update eladas Set sorszam=(Select Max(sorszam) As Max From eladas)+1, Where uj_eladas=True

Amikor access be futtatni akarom azt mondja hogy erre használjak frissítő lekérdezése, hogy írjam át a belső select részt hogy elfogadja?

Miért nem tetszik neki így?

''<[HUN]DrH>valaki mondjon egy tuningolos programot a mivel kocsis képeket tudok tuningoloni.'' https://ferromag.aranyoldalak.hu/

(#231) [HUN]Zolee válasza [HUN]Zolee (#230) üzenetére


[HUN]Zolee
senior tag

megoldva

''<[HUN]DrH>valaki mondjon egy tuningolos programot a mivel kocsis képeket tudok tuningoloni.'' https://ferromag.aranyoldalak.hu/

(#232) tildy


tildy
nagyúr

Van egy táblám amiben az alábbi adatok vannak:

id irany
1 Budapest -> Nyíregyháza
2 Nyíregyháza -> Budapest


Na ha én az adott iránynak szeretném az idját, akkor nem ad eredményt:
SELECT id FROM irany WHERE irany='Nyíregyháza -> Budapest';


"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

(#233) vakondka válasza tildy (#232) üzenetére


vakondka
őstag

Szia,

Élkészítettem a táblát és nekem sikeresen lefutott ez a lekérdezés:

SELECT id FROM `irany` WHERE `irany`='Nyíregyháza -> Budapest'

amúgy tetszett a példa lekérdezés mert én állandóan a 2 város között utazgatok :)

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

(#234) tildy válasza vakondka (#233) üzenetére


tildy
nagyúr

Hm, ezek szerint a tábla karakterkódolásával lehet baj?
Nekem ezt adja: Empty set (0.00 sec)

"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

(#235) Forest_roby válasza tildy (#234) üzenetére


Forest_roby
őstag

Valószínűleg! Ennek így működnie kell.
Én is sokat $zoptam az utf-8 és iso-8.... kodolásokkal. Főleg az volt nálam a gáz, ha win alatt írtam vmit és azt utánna a linuxos serveremen futattam. :(

-=Legyél Laza!=- __ ''Have you tried turning it off and on again?'' __ ''Is it definitely plugged in?'' /o\ :D:D

(#236) vakondka válasza tildy (#234) üzenetére


vakondka
őstag

Próbálj ki egy LIKE-os lekérdezést hogy megtalálja-e az ékezetes karaktereket.
pl SELECT id from `irany` WHERE `irany` LIKE '%Nyíregyháza%'

erre vissza kell adnia minden sort, amiben szerepel Nyíregyháza

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

(#237) tildy válasza vakondka (#236) üzenetére


tildy
nagyúr

Működik, thx.

"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

(#238) Drizzt


Drizzt
nagyúr

SELECT title, director, appearance, fee, 0.95*fee AS newfee,
fee-newfee, duration
from hvkkvi.videos
where sysdate-appearance> 5*365
UNION
SELECT title, director, appearance, fee, 0.9*fee AS newfee,
fee-newfee, duration
from hvkkvi.videos
where sysdate-appearance< 5*365
Itt a newfee-re miért mondja, hogy invalid identifier? :(

I am having fun staying poor.

(#239) Lortech válasza Drizzt (#238) üzenetére


Lortech
addikt

Első blikkre az lehet a gond, hogy nem használhatod fel az alias nevet a fee - newfee-ben. Szóval fee - 0.95*fee próbáld ki.

Thank you to god for making me an atheist

(#240) VladimirR válasza Lortech (#239) üzenetére


VladimirR
nagyúr

akkor mar egyszerubb (mondjuk imho egyebkent is) a fee*.05, illetve fee*.1

[Szerkesztve]

(#241) Lortech válasza VladimirR (#240) üzenetére


Lortech
addikt

Épp most utólag gondolkoztam, hogy valaki ebbe ''bele fog kötni''. :D És tessék. Sokszor nem gondolkozok ilyeneken, csak behelyettesítek mint egy gép. Egyébiránt teljesen igazad van.

Thank you to god for making me an atheist

(#242) Drizzt válasza Lortech (#239) üzenetére


Drizzt
nagyúr

Tényleg az, kösz!

I am having fun staying poor.

(#243) warmaster


warmaster
aktív tag

Sziasztok!

Van egy gondom, hogy írtam MSSQL2k alatt egy tárolt eljárást, aminek a lépéseit query analyser-ban lefuttatva tökéletesen működött, azonban ha meghívtam az alábbi hibaüzenetet adta ki:
Select error: Attempt to convert data stopped by syntax error in source field.

Nem tudom miért.

Előre is köszi

A kultúra úgy hull le rólam, mint másról a ruha a boldog szerelemben...

(#244) DeniBoy


DeniBoy
aktív tag

Sziasztok !

Valaki tudna segiteni ?

SQLCE ''data.SDF'' s jelszót kér de nem tudom ) !
hogyan tudnám megnyitni ?



thx !

Amiből lekvárt lehet főzni, abból pálinkát is!

(#245) gyurman


gyurman
tag

Szervusztok!

Érdekelne, hogyan tudnám megoldani, hogy:
Van egy táblám értékekkel, és azokból az értékekből táblát csinálnék úgy, hogy az értékből mező lesz és a mezőtipus igen/nem lesz?
Köszi!

(#246) tzs84 válasza gyurman (#245) üzenetére


tzs84
tag

pivot table

[link]

(#247) whitewolf5


whitewolf5
csendes tag

Sziasztok!

Most ismerkedem az MS-SQL Server 2005 Replication lehetőségével. Amiért rá esett a választás, mert lenne egy lehetőség amivel kipróbálhatnám:
- szeretnék két szervert felállítani(main és webes szerver a továbbiakban), mind a kettőre feltenni MS-SQL Server 2005-öt és kiszolgálni vele a klienseket.
-megosztani szeretnénk a webről érkező terhet, és a biztonság miatt is jónak találom
-ami megbonyolítja a dolgokat, az az , hogy mindkettőnek mindig ugyanazon adatokkal kell dolgoznia, egyforma adatszerkezettel
-a main szervert egy alkalmazás(win32 application) bombázná SELECT UPDATE és INSERT halmazok tömkelegével
-a webes sql-server pedig csak a webet szolgálná ki, úgy, hogy mindig frissítené a main sql severt a megfelelő rekordokkal, de csak a lehető legkisebb jogosultsággal rendelkezne a webes sqluser.

Amiért REPLICATION:
-mert biztosítja a folyamatos kontaktot a PUBLISHER és SUBSCRIBER között
-transactionált kapcsolatot biztosít, a két server között
-az üresjárati időt használja fel az eltérések kompenzálására, ugyanakkor ez szinte azonnal megtörténik

a kérdésem az lenne: valakinek van-e már (2napnál)hosszabb tapasztalata ezen lehetőséggel?

[Szerkesztve]

(#248) gyurman válasza tzs84 (#246) üzenetére


gyurman
tag

Köszi!

A kövi kérdésem, hogy
Vesszővel elválasztott mezőből hogyan lehet szűrni adatokat?
Pl: 115,11,5
Ebből kell kiszűrni, hogy tartalmaz-e 11-et stb.
Légyszi!

(#249) Louloudaki válasza gyurman (#248) üzenetére


Louloudaki
aktív tag

hát pl where mezo_nev like '%11%' ?
vagy szét akarod darabolni a vesszők mentén, és mind külön adat?

[Szerkesztve]

(#250) gyurman válasza Louloudaki (#249) üzenetére


gyurman
tag

Köszi gyors válaszod.
De ez a 115-öt is megtalálja, és 11-nek hiszi?
Az is jó, ha szétszedi. De egyelőre ezek a számok tulajdonságokat takarnak, és ezeket a tulajdonságokat kellene szűrni.
Pl: szürke és fém. ez 113,45 volna, de egy cellában több érték is van.
Köszike!

Útvonal

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