Az Accesben vannak nem sztandard sql parancsok is. Nem lehet ez a probléma?
Fej! Tor! Potroh!
Az Accesben vannak nem sztandard sql parancsok is. Nem lehet ez a probléma?
Fej! Tor! Potroh!
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.
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
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!
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
Azért kell a meccs tábla mert az egymással meccselők magasságát akarom összehasonlítani.
meccsenként pl hogy aztán ebből statisztikát csináljak, hogy milyen százalékban nyer a magasabb
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ő
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!
A compute paranccsal nem akar együtt működni.
Csak egészség legyen és Térerő
SP2-0735: unknown COMPUTE option beginning ''round(avg,...''
Ezt a hiba üzenetet kapom.
Csak egészség legyen és Térerő
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.
Í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é!''
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!
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!
Az abraka-dabra ehhez képest csak hókusz-pókusz.
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!
ok, megvan mind a 9 fentebb említett találat, köszi!
Az abraka-dabra ehhez képest csak hókusz-pókusz.
Igaz. Az ''egy sorban'' kitétel elkerülte a figyelmem.
''Emberek, vessetek a mókusok elé!''
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!''
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!
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!
Sajnos buta Access. A CONCAT függvény nincs definiálva benne.
Nem félek a haláltól, majdcsak túlélem valahogy!
Próbáld meg ezzel: || összefűzni a két mezőt.
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!
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]
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!
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]
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!
Nem ''in'' kell az egyenlő helyett? Nekem legalábbis az állna jobban kézre...
A beágyazott rész meg szvsz nem jó, ha külön group by-olod a két oszlop szerint...
Aki hülye, haljon meg!
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.
É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!
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!
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
A közel 40 perces lekérdezésből 1 másodperces lekérdezés lett! Köszi! !
Nem félek a haláltól, majdcsak túlélem valahogy!
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]
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?
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]
Köszönöm.
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
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
Amennyiben aktuális még:
SELECT id
FROM teszt
WHERE INSTR(text,'2') <> 0
;
Oracle 9.2-n tesztelve.
''Az élet egy hatalmas film... ...csak nem te választod a műfajt''
esetleg ... WHERE text LIKE '%2%';
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''
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.)
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.
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
köszi,
de azt hiszem ez így nagyon bonyolult. így néhány stat eltűnik.