Hirdetés

2024. április 19., péntek

Gyorskeresés

Útvonal

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

Hozzászólások

(#701) D@ni88


D@ni88
addikt

2x

[ Szerkesztve ]

(#702) D@ni88


D@ni88
addikt

Hali, van egy date típusú mezőm.
Pl 2011.04.25. 00:00:00'

Ebből szeretném az óra perc-et kinyerni. Milyen megoldás van rá? SUBSTR-el csak a dátumot írja ki és azt se olyan formába ahogy kellene...

(#703) Brown ügynök válasza D@ni88 (#702) üzenetére


Brown ügynök
senior tag

Esetleg: date('H:m', $datum);

"hacsak nem jön a jó tündér break utasítás képében..."

(#704) rt06 válasza D@ni88 (#702) üzenetére


rt06
veterán

hogy erted, hogy csak a datumot es azt sem olyan formaban?

amugy substr( 16 ), ha nem szamoltam el

Politikailag korrekt, valamint munkahely- és gyermekbarát aláírás, amiben egyáltalán nincsen p*na.

(#705) Frigo válasza D@ni88 (#702) üzenetére


Frigo
őstag

Szerintem a DATE_FORMAT sql-függvény tökéletes erre.

[ Szerkesztve ]

(#706) Frigo válasza D@ni88 (#702) üzenetére


Frigo
őstag

---------------------
dupla

[ Szerkesztve ]

(#707) WonderCSabo válasza D@ni88 (#702) üzenetére


WonderCSabo
félisten

Ha meg Oracle SQL:

to_char(datum,'HH:MM')

[ Szerkesztve ]

(#708) D@ni88 válasza Frigo (#705) üzenetére


D@ni88
addikt

SQL navigátor nem is emeli ki úgy mint függvényt, mint a TO_DATE-et.
De ennek így jónak kellene lennie nem
DATE_FORMAT('2011.04.12. 00:00:00','%H:%i')

WonderCSabo: ok ránézek

[ Szerkesztve ]

(#709) D@ni88 válasza WonderCSabo (#707) üzenetére


D@ni88
addikt

thx megvan :C

(#710) WonderCSabo válasza D@ni88 (#709) üzenetére


WonderCSabo
félisten

Persze valszeg HH24 kell Neked. :)

(#711) D@ni88 válasza WonderCSabo (#710) üzenetére


D@ni88
addikt

Igen, azt már tudtam magamtól is :)

(#712) WonderCSabo válasza D@ni88 (#711) üzenetére


WonderCSabo
félisten

Oké.

(#713) varsam


varsam
őstag

üdv
Access-be van egy táblám, amiben az egyik szöveg típusú mezőben dátumok vannak tárolva 'yyyy.mm.dd' (nincs pont a végén) formában. Van egy másik táblám, az abban lévő dátum mező rendes dátum formátumban van 'yyyy.mm.dd.' formában.
Ezt a két mezőt nekem össze kéne kapcsolnom, de így nem működik. Hogy tudnám ezt megoldani?

előre is kösz!

(#714) martonx válasza varsam (#713) üzenetére


martonx
veterán

konvertálod a szöveget dátummá, vagy a dátumot szöveggé.

Mondjuk valahogy így: Format([Date], "yyyymmdd")

Én kérek elnézést!

(#715) varsam válasza martonx (#714) üzenetére


varsam
őstag

köszi, sikerült

(#716) sonar


sonar
addikt

Sziasztok

Egy kis SQL query-s segítségre lenne szükségem.
Adott egy tábla amiben van egy id meg egy value oszlop. A feladat az lenne, hogy az azonos id-khoz tartozó value értékeket adja össze a query és én csak a végét kapjam meg.

Pl
id value
1 0,38
1 0,01
1 0,38
1 0
1 0,14
1 0,02
1 0
1 0
1 0

value=0.93 - ezt szeretném megkapni

üdv sonar

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

(#717) WonderCSabo válasza sonar (#716) üzenetére


WonderCSabo
félisten

select sum(value) value from tabla group by id;

Egyébként ez a tábla nem igazán jó: kéne lenni kulcs-nak, és annak egyértelműen az ID-nek kéne lennie, de ugye itt sok azonos ID van, tehát az kulcs nem lehet...

[ Szerkesztve ]

(#718) gaben


gaben
aktív tag

Sziasztok!
Lenne egy PL/SQL gondom a dátum formátummal, és nem értme miért nem jó... :((
Így deklarárolom :
DECLARE
v_date DATE:=TO_DATE('&sv_user_date', 'DD-MON-YYYY');

Így adom be: 05-JUN-2005 , és mindig ORA-01843 not a valid month üzenetet kapok. De miért? Ha a formátumot 'DD-MONTH-YYY'változtatom, akkor is ez az üzenet. Viszont, ha '
DD-MM-YYYY', tehát számmal írom be a hónapot, akkor jó. Mi lehet a gond az előző 2 esetben?

(#719) Lortech válasza gaben (#718) üzenetére


Lortech
addikt

to_char mit dob erre, ha kiíratod vele a sysdate-et:
to_char(sysdate,'DD-MON-YYYY')

Vagy kérdezhetném azt is, hogy mi az nls_lang:
select DECODE(parameter, 'NLS_CHARACTERSET', 'CHARACTER SET',
'NLS_LANGUAGE', 'LANGUAGE',
'NLS_TERRITORY', 'TERRITORY') name,
value from v$nls_parameters
WHERE parameter IN ( 'NLS_CHARACTERSET', 'NLS_LANGUAGE', 'NLS_TERRITORY')

Thank you to god for making me an atheist

(#720) sonar válasza WonderCSabo (#717) üzenetére


sonar
addikt

Csak a könnyebb érthetőség miatt egyszerűsítettem, természetesen nem egyedi kulcsról van szó.

A query-t meg majd este fele próbálom. :R

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

(#721) gaben válasza Lortech (#719) üzenetére


gaben
aktív tag

Szia!
1. A hiba azonos, ORA-01843: not a valid month

2.
LANGUAGE HUNGARIAN
TERRITORY HUNGARY
CHARACTER SET AL32UTF8

(#722) gaben válasza gaben (#721) üzenetére


gaben
aktív tag

Ja, azt elfeledtem ,hogy ORACLE XE 10g megy

(#723) Lortech válasza gaben (#721) üzenetére


Lortech
addikt

Mivel magyar, ezért ezzel megy:
TO_DATE('05-JÚN.-2005', 'DD-MON-YYYY')

vagy TO_DATE('05-JUN-2005', 'DD-MON-YYYY','nls_date_language = ENGLISH')

vagy alter session nls[paraméterek]

vagy init.ora-ban beállítani.

Thank you to god for making me an atheist

(#724) gaben válasza Lortech (#723) üzenetére


gaben
aktív tag

Köszi szépen!
NA ez megoldódott, viszont lett egy újabb probléma :)
Próbáltam futtatni egy scriptet, de a mérete nagyobb ,mint a quota. Sehogy nem bírtam átállítani :( Van ötleted?

(#725) Lortech válasza gaben (#724) üzenetére


Lortech
addikt

Milyen script, pontosan hol futtatod (kliens) és milyen limitbe ütköztél bele (hibaüzenet, kód)?

Thank you to god for making me an atheist

(#726) gaben válasza Lortech (#725) üzenetére


gaben
aktív tag

Egy scrript ami felépít egy egyszerűbb adatbázist, csak az a baj, hogy 650 Kb, és az apex -ben mikor megnyitom (webes kezelője az XE-nek) a scriptet akkor "The script exceeds the maximum size allowed." , Limit 500kb. S

(#727) Lortech válasza gaben (#726) üzenetére


Lortech
addikt

Hű nem tudom, nincs közelemben XE példány. SQL*Plus-szal is megvan ez a limitáció ?

szerk: Ha nincs más megoldás, nem tudod szétkapni a scriptet ?

[ Szerkesztve ]

Thank you to god for making me an atheist

(#728) gaben válasza Lortech (#727) üzenetére


gaben
aktív tag

Hát igen, SQL * PLUS-ban nincs ez a limitáció, ott simán ment. Csak gondoltma hátha vna valami megoldás arra is :) Köszi szépen.

(#729) sonar válasza WonderCSabo (#717) üzenetére


sonar
addikt

Müxik, már csak a vb6 vs access között kell finom hangolni a dolgot, mert momentán csak az első értéket kapom meg pedig 26 szummának kellene lenni.

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

(#730) martonx válasza sonar (#729) üzenetére


martonx
veterán

Léptesd a recordsetet :DDD vagy elrontottad a pofonegyszerű SQL-t.

Én kérek elnézést!

(#731) sonar válasza martonx (#730) üzenetére


sonar
addikt

csak az a baj,hogy arra is error-t dob.
Lekértem a count-ot az meg azt mondja, hogy 1.

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

(#732) rum-cajsz válasza gaben (#728) üzenetére


rum-cajsz
őstag

szerintem ez apex oldali limit, nem adatbázis....

=Kilroy was here============================ooO=*(_)*=Ooo=======

(#733) rum-cajsz válasza sonar (#731) üzenetére


rum-cajsz
őstag

Helyesen a lekérdezés:

select id,sum(value) value from tabla group by id;

=Kilroy was here============================ooO=*(_)*=Ooo=======

(#734) sonar válasza rum-cajsz (#733) üzenetére


sonar
addikt

Tudom

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

(#735) WonderCSabo válasza rum-cajsz (#733) üzenetére


WonderCSabo
félisten

[link]...

(#736) gaben


gaben
aktív tag

Szerintetek ez miért nem fut le?

SET SERVEROUTPUT ON;
DECLARE
v_instructor_id NUMBER := &inst_id;
v_course_numb NUMBER;
v_first name instructor.first_name%TYPE;
v_last name instructor.last_name%TYPE;

BEGIN
SELECT COUNT(s.instructor_id), i.first_name, i.last_name
INTO v_course_numb, v_fist_name, v_last_name
FROM section s, instructor i
WHERE s.instructor_id = v_instructor_id;

if v_course_numb >= 3 THEN
DBMS_OUTPUT.PUT_LINE('The instructor ' || v_first_name );
ELSE
DBMS_OUTPUT.PUT_LINE('The instructor ' ');
END IF;


DBMS_OUTPUT.PUT_LINE('Done...');

END;
.
/

ORA-06550: line 4 coloumn 16
PLS-00103 : Encountered the simbol "INSTRUCTOR" when expecting one of the following :
:= , ( @ .....stb...

(#737) WonderCSabo válasza gaben (#736) üzenetére


WonderCSabo
félisten

A v_first változó típusa instructor.first_name%TYPE, az a name nem kell oda.

[ Szerkesztve ]

(#738) Jester01 válasza gaben (#736) üzenetére


Jester01
veterán

Ha ezt másoltad, akkor több hiba is van. Alulhúzás hiányzik 2 helyen, illetve egy r betű.

WonderCSabo: de kell, a változó deklarációból kimaradt az alulhúzás.

[ Szerkesztve ]

Jester

(#739) WonderCSabo válasza Jester01 (#738) üzenetére


WonderCSabo
félisten

Már látom, a kód többi részében télleg van.

(#740) gaben válasza WonderCSabo (#739) üzenetére


gaben
aktív tag

Igen, valóban. Pedig átnéztem, de úgy látom ,hogy ez elkerülte a figyelmem. Köszönöm mindkettőtöknek. Az SQL parancsból egy GROUP by is hiányzot, ezt pótoltam de valamiért nem jó. :(
SELECT COUNT(s.instructor_id), i.first_name, i.last_name
INTO v_course_numb, v_first_name, v_last_name
FROM section s, instructor i
WHERE s.instructor_id = v_instructor_id
GROUP BY s.instructor_id;

Hiba:
ORA-00979: not a GROUP BY expression
De miért?

(#741) WonderCSabo válasza gaben (#740) üzenetére


WonderCSabo
félisten

GROUP BY s.instructor_id, i.instructor_id; ?

(#742) Jester01 válasza WonderCSabo (#741) üzenetére


Jester01
veterán

Az i.first_name, i.last_name akkor sem lesz kiválasztható.

Jester

(#743) bpx válasza gaben (#740) üzenetére


bpx
őstag

azért mert egy oszlopra nem mondhatsz egyszerre GROUP BY-t meg oszlopfüggvényt is, és a másik 2 oszloppal is kezdeni kellene valamit

(#744) WonderCSabo válasza bpx (#743) üzenetére


WonderCSabo
félisten

Teljesen igazatok van... Nem figyeltem.

(#745) gaben válasza WonderCSabo (#744) üzenetére


gaben
aktív tag

Igen, én sem. Köszönöm, így már jó:
SELECT COUNT(s.instructor_id), (SELECT first_name FROM instructor WHERE instructor_id=v_instructor_id), (SELECT last_name FROM instructor WHERE instructor_id=v_instructor_id)
INTO v_course_numb, v_first_name, v_last_name
FROM section s
WHERE s.instructor_id = v_instructor_id
GROUP BY s.instructor_id ;

(#746) rum-cajsz válasza gaben (#740) üzenetére


rum-cajsz
őstag

A group by-t nem arra az oszlopra kell, amire a függvényt használod, hanem amire csoportosítani akarsz:

SELECT COUNT(s.instructor_id), i.first_name, i.last_name
INTO v_course_numb, v_first_name, v_last_name
FROM section s, instructor i
WHERE s.instructor_id = v_instructor_id
GROUP BY i.first_name, i.last_name;

Nem tudom melyik adatbázis kezelőn használod, de jó, ha tudod, ha a count-on belül használsz oszlopnevet, akkor annak "null" értéke esetén elképzelhető, hogy nem összegzi az a sort. Ha az összes sort akarod számolni pontosabb ez a kód:

SELECT COUNT(*), i.first_name, i.last_name
INTO v_course_numb, v_first_name, v_last_name
FROM section s, instructor i
WHERE s.instructor_id = v_instructor_id
GROUP BY i.first_name, i.last_name;

Ha jól emlékszem Oracle-nél ez mindegy.

=Kilroy was here============================ooO=*(_)*=Ooo=======

(#747) WonderCSabo válasza rum-cajsz (#746) üzenetére


WonderCSabo
félisten

Biztos jó ötlet név szerint csoportosítani? Mi van, ha van két azonos nevű oktató... A count-al meg sztem az oktatók óráinak számát akarja számoltatni, tehát a táblában hányszor fordulnak elő az azonos instuctor_id-k.

gaben: A 2. két select-et összevonhatod.

[ Szerkesztve ]

(#748) gaben válasza rum-cajsz (#746) üzenetére


gaben
aktív tag

Gyanús ez így már próbáltam ,de kipróbáltam, hátha elírtma vmit és nem fut le. ORA-01422: exact fetch returns more than requested number of rows

(#749) bpx válasza gaben (#748) üzenetére


bpx
őstag

a lekérdezésed több sort is visszaad, a SELECT INTO Oracle-ben pedig 1 sort vár

(#750) rum-cajsz válasza WonderCSabo (#747) üzenetére


rum-cajsz
őstag

Igazad van, szemantikailag nem néztem, csak a szintaktikát.
Most látom, hogy a két táblát nem is kapcsolta össze, így ez hibás eredményt fog adni.
Én így csinálnám.

SELECT s.instructor_id,i.first_name, i.last_name,COUNT(*)
INTO v_dummy,v_first_name, v_last_name,v_course_numb
FROM section s, instructor i
WHERE s.instructor_id = i.instructor_id
and s.instructor_id=v_instructor_id
GROUP BY s.instructor_id,i.first_name, i.last_name;

Mondjuk könnyebb lenne, ha tudnánk mi a feladat, és a két tábla szerkezete... :)

[ Szerkesztve ]

=Kilroy was here============================ooO=*(_)*=Ooo=======

Útvonal

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