Hirdetés

2024. május 1., szerda

Gyorskeresés

Útvonal

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

Hozzászólások

(#51) rdi válasza jeszi (#46) üzenetére


rdi
veterán

Az Accesben vannak nem sztandard sql parancsok is. Nem lehet ez a probléma?

Fej! Tor! Potroh!

(#52) Gambitman


Gambitman
csendes tag

Sziasztok!
A kérdésem a következő:
Van egy táblám sportoló néven sportolók adatairól
Egy másik meccs nevű táblám amiben van egy győztes és egy vesztes mező mindkettő a sportoló táblára mutató idegen kulcs.
Hogy tudok olyan join-t létrehozni amiben össze tudom hasonlítani a két sportoló adatait, pl a magasságuk különbségét?
Ugye ez esetben 2x szerepelnének az egyesített táblában a sportoló tábla mezői.

(#53) Nedudgi válasza Gambitman (#52) üzenetére


Nedudgi
aktív tag

Nem egészen értem de erre vagy kíváncsi?

SELECT gyv.gyoztes, gyv.vesztes, sportolo.magasság, sportolo.magasság
FROM gyv INNER JOIN sportolo ON (gyv.vesztes = sportolo.azonosító) AND (gyv.gyoztes = sportolo.azonosító);

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

(#54) L3zl13 válasza Nedudgi (#53) üzenetére


L3zl13
nagyúr

Szvsz nem lehet and-del győztes és vesztes is...
És nem tom minek kell egyátalán a meccs tábla a magasság összevetéséhez.

Aki hülye, haljon meg!

(#55) Nedudgi válasza L3zl13 (#54) üzenetére


Nedudgi
aktív tag

Lehet, hirtelen ez jutott eszembe, de azt hogy minek kell ehhez győztes vesztes tábla, bár szvsz egy view-el szerencsésebb lenne megoldani a győztes vesztes összekapcsolást.

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

(#56) Gambitman válasza L3zl13 (#54) üzenetére


Gambitman
csendes tag

Azért kell a meccs tábla mert az egymással meccselők magasságát akarom összehasonlítani.

(#57) Gambitman válasza Gambitman (#56) üzenetére


Gambitman
csendes tag

meccsenként pl hogy aztán ebből statisztikát csináljak, hogy milyen százalékban nyer a magasabb

(#58) Töki


Töki
tag

Sziasztok az alábbi parancsokat adtam meg.

SQL> break on evfolyam skip 1
SQL> compute avg label ÁTLAG of osztalyzat on evfolyam
SQL> select evfolyam, tmegnev, nev, osztalyzat from oktatas order by evfolyam,tmegnev;

A problémám az, hogy az átlag itt-ott 8 tizedes jegyet ír ki. Azt a feladatot kaptam, hogy csak kettőt írjon ki, próbáltam a round paranccsal, de nem működik:

SQL> compute round(avg,2) label ÁTLAG of osztalyzat on evfolyam

Az egyetlen ötletem, hogy formázom az egész oszlopot, de akkor a jegyeknél is 2 tizedes jegy lesz (pl:4.00), és sajnos ez sem jó.

Van valakinek ötlete, életbevágó lenne.

Csak egészség legyen és Térerő

(#59) Töki


Töki
tag

Up!

Csak egészség legyen és Térerő

(#60) L3zl13 válasza Töki (#58) üzenetére


L3zl13
nagyúr

Hogy hogy enm müxik a round?
Ismeretlen a függvény, vagy két tizedesre nem tud kerekíteni?

Aki hülye, haljon meg!

(#61) Töki válasza L3zl13 (#60) üzenetére


Töki
tag

A compute paranccsal nem akar együtt működni.

Csak egészség legyen és Térerő

(#62) Töki válasza Töki (#61) üzenetére


Töki
tag

SP2-0735: unknown COMPUTE option beginning ''round(avg,...''

Ezt a hiba üzenetet kapom.

Csak egészség legyen és Térerő

(#63) Szaki@Pécs


Szaki@Pécs
tag

probléma:
van két tábala x és y és kéne törölni x-ből azokat a sorokat, melyekben lévő param1 és param2 nincs benne y-ban (egyszerre, egy sorban).

SELECT param1, param2 FROM x MINUS SELECT param1, param2 FROM y;

ez megadja a kívánt sorokat, de mindkét paramétert visszaadja ezért a

DELETE FROM a WHERE param1 = (SELECT param1, param2 FROM x MINUS SELECT param1, param2 FROM y);
nem müxik, too many values

megoldási javaslat?

Az abraka-dabra ehhez képest csak hókusz-pókusz.

(#64) sky77 válasza Szaki@Pécs (#63) üzenetére


sky77
aktív tag

Így esetleg?


delete from x
where param1 not in (select param1 from y)
and param2 not in (select param2 from y)



Mielőtt próbálgatod, azért valami biztonsági másolatot készíts!

''Emberek, vessetek a mókusok elé!''

(#65) L3zl13 válasza sky77 (#64) üzenetére


L3zl13
nagyúr

Egy körben szvsz így:


delete from x where (param1, param2) not in (select param1, param2 from y)



Először szvsz delete helyett használj select *-ot és csekkold, hogy jó-e. Vagy biztonsági másolat.

Szerk: Az uccsó mondat a kérdezőnek szólt természetesen.

[Szerkesztve]

Aki hülye, haljon meg!

(#66) Szaki@Pécs válasza sky77 (#64) üzenetére


Szaki@Pécs
tag

select-et írtam a delete helyére próbálgatásra, és érdekes eredményt kaptam.

a select ... MINUS ... paranccsal 9 találat volt
az általad javasolt paranccsal csak 5

most megnézem a maradék 4el mi a helyzet.

Köszi a segítséget! :R

Az abraka-dabra ehhez képest csak hókusz-pókusz.

(#67) L3zl13 válasza Szaki@Pécs (#66) üzenetére


L3zl13
nagyúr

Az övé azért nem jó, mert nem egyszerre vizsgálja a két paramétert. Szóval ha bármelyik paraméter szerepel a táblában, akkor már nem kerül bele a listába. Függetlenül attól, hogy a másik paraméterrel egy sorban szerepelt-e vagy sem...

Ps az enyém sem biztos, hogy jó, persze ezért próbáld ki.
Ha így nem megy, akkor még trükközhetsz olyannal, hogy:

delete from x where (param1+param2) not in (select param1+param2 from y)

+ helyett a megfelelő szöveg összefűzés művelettel






[Szerkesztve]

Aki hülye, haljon meg!

(#68) Szaki@Pécs válasza L3zl13 (#65) üzenetére


Szaki@Pécs
tag

ok, megvan mind a 9 fentebb említett találat, köszi! :R

Az abraka-dabra ehhez képest csak hókusz-pókusz.

(#69) sky77 válasza L3zl13 (#67) üzenetére


sky77
aktív tag

Igaz. Az ''egy sorban'' kitétel elkerülte a figyelmem.

''Emberek, vessetek a mókusok elé!''

(#70) metalcsiki


metalcsiki
csendes tag

Hali! Nemtom hova kellene írni ez áll legközelebb a témához! Tudna nekem valaki segíteni a Poseidon nevű programban? Osztálydiagrammot és szekvenciadiagrammot kellene csinálnom és foggalmam nincs hogy! Légyszi segítsen valaki nagyon fontos lenne! Előre is köszi!

''Ööööööööö Beavis & Butthead! You little bastards!''

(#71) jeszi


jeszi
tag

Van egy tábla, melyben a mezők: |telep| |megye| |nev| |id| |és még sok oszlop...|

Azokat a sorokat akarom megkapni, melyben a nev+megye csak egyszer szerepel.

Szóval ha 2 ''Nagy Béla'' van Hajdú-Biharban, akkor ő ne legyen benne az új táblában.

Ha csak az egyedi neveket nézem, akkor ez működik:

SELECT * FROM brick, [SELECT nev as onev, count(*) as db FROM brick GROUP BY nev having count(*) = 1]. AS [onev] WHERE nev = onev;


Tudja valaki a megoldást?

Nem félek a haláltól, majdcsak túlélem valahogy!

(#72) L3zl13 válasza jeszi (#71) üzenetére


L3zl13
nagyúr

Első körben talán valahogy így...
Persze lehet, hogy van jobb megoldás.

SELECT * FROM brick, [SELECT CONCAT(nev, region) as nev_reg FROM brick GROUP BY nev_reg having count(*) = 1]. AS [nev_reg] WHERE nev_reg = CONCAT(nev, region);

Jah, CONCAT MySQL függvény. Nem tudom te mit használsz...

[Szerkesztve]

Aki hülye, haljon meg!

(#73) jeszi válasza L3zl13 (#72) üzenetére


jeszi
tag

Sajnos buta Access. A CONCAT függvény nincs definiálva benne.

Nem félek a haláltól, majdcsak túlélem valahogy!

(#74) faster válasza jeszi (#73) üzenetére


faster
nagyúr

Próbáld meg ezzel: || összefűzni a két mezőt.

(#75) jeszi válasza L3zl13 (#72) üzenetére


jeszi
tag

Tévedtem, van CONCAT függvény, de mégsem jó a select. Azt írja ki, hogy:
''A kifejezésben szereplő 'CONCAT' függvény nincs definiálva.''

Nem félek a haláltól, majdcsak túlélem valahogy!

(#76) faster válasza jeszi (#75) üzenetére


faster
nagyúr

Szerintem a CONCAT az eléggé mysql specifikus. A Microsoft féle Transact SQL-ben a + jelet tünteti fel, mint stringösszefűző operátort.

[Szerkesztve]

(#77) jeszi válasza faster (#76) üzenetére


jeszi
tag

Köszi, a + jel tényleg összeolvassa a két mezőt.

Most próbálgatom, de nem akar összejönni a megoldás. :(

Nem félek a haláltól, majdcsak túlélem valahogy!

(#78) faster válasza jeszi (#77) üzenetére


faster
nagyúr

Ez működik?

SELECT * FROM brick WHERE nev+region = (SELECT nev+region FROM brick GROUP BY nev, region HAVING count(*) = 1);

Sajnos nem tudtam kipróbálni.

[Szerkesztve]

(#79) jeszi válasza faster (#78) üzenetére


jeszi
tag

Most nézem csak, hogy írtál nekem megoldást, mindjárt kipróbálom azt, de közben sikerült egy jó megoldást találnom:

SELECT * FROM brick,
[SELECT nev + megye as nev_megy FROM brick
GROUP BY nev + megye having count(nev + megye) = 1]. AS nev_megy
WHERE nev + megye=nev_megy;


Köszönöm a gyors segítséget nektek!

Nem félek a haláltól, majdcsak túlélem valahogy!

(#80) L3zl13 válasza faster (#78) üzenetére


L3zl13
nagyúr

Nem ''in'' kell az egyenlő helyett? Nekem legalábbis az állna jobban kézre... :F

A beágyazott rész meg szvsz nem jó, ha külön group by-olod a két oszlop szerint... :F

Aki hülye, haljon meg!

(#81) faster válasza L3zl13 (#80) üzenetére


faster
nagyúr

Nem ''in'' kell az egyenlő helyett?

Elméletileg, de megy egyőségjellel, sőt, ha rákeresel arra, hogy ''subquery syntax'', a mysql helpnél ez jön ki:

SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);

A beágyazott rész meg szvsz nem jó, ha külön group by-olod a két oszlop szerint...

Kipróbáltam, és pontosan ugyanazt az eredményt adta, mint a concattal összefűzött mezőknél.

(#82) L3zl13 válasza faster (#81) üzenetére


L3zl13
nagyúr

És voltak olyan értékek a teszt adatbázisban, ahol az egyik vagy a másik oszlop egyezett, de a kettő együtt nem?

Aki hülye, haljon meg!

(#83) jeszi


jeszi
tag

Van két tábla: ''a'' és ''b''
a-nak azon elemeit akarom megkapni, melyek b-ben nincsenek meg.

Azt hiszem ez jó megoldás:

SELECT a.id FROM a
WHERE a.id NOT IN
(SELECT b.id FROM b);

Indexelve vannak a mezőnevek, de már 25 perce fut a lekérsezés! Nem lehet ezt valahogy másképp megírni? (Ezek a ''not in''-es lekérdezések mindig sokáig tartanak :((( )

Nem félek a haláltól, majdcsak túlélem valahogy!

(#84) Goose-T válasza jeszi (#83) üzenetére


Goose-T
veterán

A WHERE feltételbe rakott SELECT nagyon lelassítja a lekérdezést, mivel minden egyes sornál lefuttatja a feltételben szereplő SELECT utasítást. Ha az a.id és a b.id megfeleltethető egymásnak, akkor egy LEFT JOIN-os lekérdezéssel közösíteni kell a két táblát majd egy külső SELECT-tel kiválogatni a megfelelő rekordokat, valahogy így:

SELECT * FROM (SELECT a.id as aid, b.id as bid FROM
a LEFT JOIN b ON a.id = b.id) WHERE bid IS NULL



[Szerkesztve]

Rockbandám: https://fb.me/scharlotterhodes *** Gitárelektronikai műhelyem: https://www.fb.me/goosetgitar

(#85) jeszi válasza Goose-T (#84) üzenetére


jeszi
tag

A közel 40 perces lekérdezésből 1 másodperces lekérdezés lett! Köszi! :R :C :R :C :R :C :R :C :R :C :R !

Nem félek a haláltól, majdcsak túlélem valahogy!

(#86) F1DO


F1DO
senior tag

SOS segítség kellene, mert nagyon elakadtam, feltúrtam az általam elérhető helpeket, dokumentumokat, de nincs válasz bennük!!

Szóval Ms SQL 2000 alatt szeretnék user defined function - azaz felhasználó által létrehozott függvényt csinálni, olyat, ami beolvas az adatbázisból egy tábla több oszlopát és az adatival matematikai műveleteket végez. Ami nem megy: Egyszerűen sehol nem látok példát arra, hogy a függvényben hogyan hivatkozhatok egy tábla oszlopaira?????
Ami eddig megvan:

CREATE FUNCTION tartozik
(
@HatraEvdij INT,
@TeljEvdij INT,
@Tartozas INT
)
RETURNS INT
AS
BEGIN
SET @TeljEvdij = Évesdíjak.Inév + Évesdíjak.IInév + Évesdíjak.IIInév + Évesdíjak.IVnév
SET @HatraEvdij = (Évesdíjak.Évesdíj /365)*99
SET @Tartozas = @TeljEvdij - @HatraEvdij
RETURN @Tartozas
END

A hivatkozott oszlopok: Évesdíjak.Inév, Évesdíjak.IInév III..IV
és az Évesdíj.Évesdíj

Így ahogy van hibaüzenetet ad a függvénykészítő hogy nem találja, vagy nem jó az Évesdíj. hivatkozás...

Gyors segítség kellene!!!






[Szerkesztve]

(#87) sbazsi


sbazsi
veterán

hogy lehet egy táblában a legeszerűbben az egyik mezőben lévő értéket lecserléni?
pl www.cegnev.hu -> www.cegnev.com
sok sorban kellene, manuálisan hajtépő mulatság lenne.

másik kérdés, hogy hogy lehet egy tábla minden sorába egy bizonyos oszolpba beírni valami értéket a többi modosítása nélkül?

(#88) sbazsi válasza sbazsi (#87) üzenetére


sbazsi
veterán

up

(#89) faster válasza sbazsi (#87) üzenetére


faster
nagyúr

Ezek egyszerű egysoros SQL utasítások. Meglévő rekordok mezőinek az átírására az UPDATE való.

UPDATE tablanev SET mezonev=ertek WHERE kulcs=azonosito;



A példádnál talán valahogy így lehetne:

www.cegnev.hu -> www.cegnev.com


UPDATE tablanev SET akarmi=''www.cegnev.com'' WHERE akarmi=''www.cegnev.hu'';

másik kérdés, hogy hogy lehet egy tábla minden sorába egy bizonyos oszolpba beírni valami értéket a többi modosítása nélkül?

Ha minden rekordban akarsz módosítást végrehajtani, akkor egyszerűen el kell hagyni a WHERE feltételt.

UPDATE tablanev SET mezonev=ertek;

[Szerkesztve]

(#90) sbazsi válasza faster (#89) üzenetére


sbazsi
veterán

Köszönöm. :R

(#91) Goose-T válasza F1DO (#86) üzenetére


Goose-T
veterán

Függvényben is ugyanúgy SELECT-ekkel kell hivatkozni az adatokra. Ha pl. oszlopokat akarsz összegezni, akkor a SELECT-ben használj aggregáló függvényeket (SUM, COUNT, ilyesmi).

Rockbandám: https://fb.me/scharlotterhodes *** Gitárelektronikai műhelyem: https://www.fb.me/goosetgitar

(#92) e-biza


e-biza
őstag

hi
a köv gondom az hogy van 3 sorom az XYZ táblámban (mindegyik különbözö id-vel rendelkezik):
1: 1,2,3
2: 2,3,4
3: 3,4,5

Szeretném kiiratni azt amelyik a 2-es számot tartalmazza. (azaz az id1 és id2-t) hogyan lehetséges? a segitséget elöre is köszönöm.

Liƒє is too short. - http://www.lowcostdomain.eu

(#93) stanci válasza e-biza (#92) üzenetére


stanci
tag

Amennyiben aktuális még:

SELECT id
FROM teszt
WHERE INSTR(text,'2') <> 0
;



Oracle 9.2-n tesztelve. :DDD

''Az élet egy hatalmas film... ...csak nem te választod a műfajt''

(#94) VladimirR válasza stanci (#93) üzenetére


VladimirR
nagyúr

esetleg ... WHERE text LIKE '%2%';

(#95) stanci


stanci
tag

Szerintetek ez mért nem megy?

ALTER TABLE dolg
ADD CONSTRAINT cons_date CHECK (belepes_date < sysdate)
;



hibaüzi:

  ADD CONSTRAINT cons_date CHECK (hiredate < sysdate)
*
Hiba a(z) 2. sorban:
ORA-02436: a dátum vagy rendszer változó hibásan nam megadva a CHECK megszorításban



MOD: Vlad ez neked biztos gyerekjáték.


[Szerkesztve]

''Az élet egy hatalmas film... ...csak nem te választod a műfajt''

(#96) sbazsi


sbazsi
veterán

Van egy excel tábla és egy sql adatbázis.
Hogy tudom az excel tartalmát úgy visszatölteni az adatbázisba, hogy bizonyos oszlopok lecserélődjenek, bizonyosak pedig maradjanak azok, amik.
(Az adatbázisba korábban már beletöltöttem az excel tábla tartalmát, csak azt akarom, hogy az egyik oszlop megmaradjon.)

(#97) Gregorius válasza sbazsi (#96) üzenetére


Gregorius
őstag

Ha egyszeri alkalom, akkor ez a leggyorsabb megoldás szerintem:
1. átnevezed az SQL-ben lévő táblát A-ra
2. beimportálod az excel táblát B néven
3. csinálsz egy inner join lekérdezést az egyező oszlopok mentén és onnan veszed a megfelelő oszlopot, ahonnan meg akarod tartani.
4. Az így kapott lekérdezést kiküldöd a megfelelő táblába (SELECT INTO)

Ha gyakran lesz szükség erre a műveletre, akkor írsz rá tárolt eljárást, ami soronként végigmegy az excel táblán (MSSQL2005 előtt ehhez előbb temp-be importálni kell, MSSQL2005-ben direktben lekérdezhető), és a megfelelő sorokat módosítja az SQL táblán.

Ha profi vagy és nagyon tudsz szkriptelni, akkor megpróbálható ugyanez DTS-sel/SSIS-sel is.

Az első szabvány SQL-92 parancsokkal megoldható, a másodikhoz már kell egy kis folyamatvezérlés is, a harmadik meg csak MSSQL-lel működik.

(#98) marcias


marcias
őstag

Sziasztok! Nem tudom pontosan, hogy a problémám hova köthető, van köze a PHP-hoz, PHPMyAdminhoz, MySQL-hez és PHP-Nuke-hoz is. Szóval a PHP-Nuke portálon lévő szövegek egy részénél (úgy vettem észre, hogy azoknál, amiket én hoztam létre, pl hírek, hozzászólások, rovatcímek), nem tudja megjeleníteni az ékezetes karaktereket, sőt, az ékezetes karakter után következő szövegrész sem jelenik meg, pl: Kérdések helyett egy K látszik csak. Nem tudom mitől lehet, hiszen van, ahol megjeleníti az ékezeteket, a MySQL és a PHPMyAdmin és ékezetesre van állítva. Viszont van egy hibaüzenet PHPMyAdminnál, hogy a PHP extensions-ok közül az mbstring.dll nem található: ''The mbstring PHP extension was not found and you seem to be using multibyte charset. Without mbstring extension phpMyAdmin is unable to split strings correctly and it may result in unexpected results.'' Ez lehet az oka? Köszi előre is.

Steam: marcias88

(#99) sbazsi válasza Gregorius (#97) üzenetére


sbazsi
veterán

köszi,
de azt hiszem ez így nagyon bonyolult. így néhány stat eltűnik.

(#100) marcias


marcias
őstag

Itt egy kép a probléma szemléltetésére, a bal oldali menüben több helyen nem jelennek meg az ékezetes karakterek: [kép]

Steam: marcias88

Útvonal

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