SQL kérdések - Szoftverfejlesztés fórum

üzenetek

hozzászólások


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.


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?


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 :((( )


Goose-T
(veterán)
Blog

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]


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 !


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]


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?


sbazsi
(veterán)

up


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]


sbazsi
(veterán)

Köszönöm. :R


Goose-T
(veterán)
Blog

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).


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.


stanci
(tag)

Amennyiben aktuális még:

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



Oracle 9.2-n tesztelve. :DDD


VladimirR
(nagyúr)

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


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]


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.)


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.


marcias
(őstag)
Blog

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.


sbazsi
(veterán)

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


marcias
(őstag)
Blog

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]

üzenetek