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

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


WonderCSabo
félisten

Szabó Géza 0 biztos nem lesz. :) Ha arra gondolsz, itt télleg nem kapcsolta össze.

Igen, télleg az lenne. Viszont ha megszorítod az egészet egyetlen adott id-re, akkor nem is kell a group by.

[ Szerkesztve ]

(#752) gaben válasza WonderCSabo (#751) üzenetére


gaben
aktív tag

Valóban nincs összekapcsolva, de szerintem nem fog hibás eredményt adni, mert a név úgy is a megfelelő ID-hez fog tartozni... De valóban elegánsabb...
köszönöm a hozzászólásokat és a segítséget. :R

[ Szerkesztve ]

(#753) ko9


ko9
addikt

Üdv!
Mostanában autodidakta módon probálgatom az SQL parancsokat, nagyjából mindent sikerült megoldani amit akartam - vagy találtam neten hozzá megoldást de most ez megfogott. Szóval a parancs amit akarok futtatni ez lenne:

SELECT * FROM `template`
WHERE `Quality` =2
AND `ItemL` BETWEEN 272 AND 305
AND `cl` =2 OR `cl` =4

Ha csak a Quality és a ItemL van benn csak akkor nincs semmi probléma, akkor azt adja ki amit kell, de ha bekerül a cl, akkor megkavarodik minden. A Quality adja a többi bejegyzést is (1től 5ig vannak benne minősitve, azokat kiadja), meg az ItemL is...
Mi lehet a probléma, mi szúrok el? :F

Köszönöm a segitséget!

Szerk.: Ha külön-külön irom a parancsokat (cl+ItemL vagy cl+Quality) akkor is "zavarodik", ergo tuti azzal van a baj.

[ Szerkesztve ]

--------------------------- Privátot privátba - Fórumtémát fórumba!! --------------------------- --------- I/DEBUG(3430): debuggerd committing suicide to free the zombie! ---------

(#754) Atcom válasza ko9 (#753) üzenetére


Atcom
csendes tag

Így próbáld:

SELECT * FROM `template`
WHERE `Quality` =2
AND `ItemL` BETWEEN 272 AND 305
AND (`cl` =2 OR `cl` =4)

(#755) jeges válasza ko9 (#753) üzenetére


jeges
senior tag

ha jól értem, a zárójelezéssel van probléma: az or feltétel miatt nem érvényesülnek az and kapcsolatok.

(#756) ko9 válasza Atcom (#754) üzenetére


ko9
addikt

Nagyon köszönöm mindkettőtöknek az extragyors segitséget, az lett amit akartam :Y :R
Már csak egy Insert kell :D

[ Szerkesztve ]

--------------------------- Privátot privátba - Fórumtémát fórumba!! --------------------------- --------- I/DEBUG(3430): debuggerd committing suicide to free the zombie! ---------

(#757) D@ni88


D@ni88
addikt

Sziasztok.

PL/SQLben hogy lehet megvizsgálni azt hogy az lekérdezés egyik mezője tartalmazza e azadott szót.

És ugye az IF-nek két ága kellene hogy legyen :)

(#758) bpx válasza D@ni88 (#757) üzenetére


bpx
őstag

na ezt szemléltesd egy példával, hogy mit szeretnél
egyébként meg miért nem jó eleve úgy lekérdezni, hogy benne van a feltételben?

(#759) WonderCSabo válasza D@ni88 (#757) üzenetére


WonderCSabo
félisten

Egy ága is lehet.

(#760) Lortech válasza D@ni88 (#757) üzenetére


Lortech
addikt

A lekérdezés eredményének egyik mezője? Egyik, mint tetszőleges mezője vagy egyik, mint 1 adott mezője.

A lekérdezés eredményén (kurzor) végiggyalogolsz egy ciklussal, és a megfelelő mező(ke)t megvizsgálod instr függvénnyel.
Hatékonyabb lenne, ha eleve az sql tartalmazza a vizsgálatot a where-ben a like klózzal.
Nem tudom, hogy ezzel segítettem-e, mert 38 féleképpen lehet értelmezni a mondatodat, pontosítás kéne pont bemenet és elvárt végeredmény tekintetében.

Thank you to god for making me an atheist

(#761) gabó


gabó
tag

Sziasztok!
Most kezdetem el foglalkozni a lekérdezésekkel.
Van egy egy tábla, x oszloppal. feltöltve betűkkel.
Azt szeretném lekérdezni,h pl mennyi a betű van a táblába. Egy oszlopba megy a dolog de az egész táblában nem(egyesével lekérdezni macerás). Illetve folytatásban úgy képzelném,h a végén kiírja, hogy pl a-ból ennyi, b-ből ennyi stb db van a táblában.
Tudnátok segíteni,h miként kell ezt megírni?
Előre is köszönöm!

Nekem8

(#762) martonx válasza gabó (#761) üzenetére


martonx
veterán

Szia!

Mennyi az az x oszlop? 3 vagy 500? Ha 3, akkor kérdezd le 3-szor. Ha 500, akkor írj egy tárolt eljárást, ami lekérdezi 500-szor felparaméterezve.

Másrészt biztos ezt akarod? Nem tudom mi az az alap problematika, amit ilyen elcseszett tábla szerkezettel lehet megoldani, de biztos van rá jobb megoldás.

Én kérek elnézést!

(#763) gabó válasza martonx (#762) üzenetére


gabó
tag

Szia!
14 oszlop van. Igen, de nem tudom,h kell:-) mivel most kezdtem:-( csak kipróbáltam egy csv-ből betölteni adatokat, ez ment. Utána próbáltam lekérdezni, az is megy de csak egy oszlopra, egy adattal,de összetett lekérdezés, tárolt eljárás ahogy írod...dunsztom sincs egyenlőre. Pedig azt gondoltam,h egyszerű...de nem:-(

[ Szerkesztve ]

Nekem8

(#764) Atcom válasza gabó (#761) üzenetére


Atcom
csendes tag

Egy Transact-SQL szösszenet:

create table #tmpString
(
nID int identity(1,1) not null,
cColumn01 varchar(512),
cColumn02 varchar(512),
cColumn03 varchar(512)
)

insert into #tmpString
(cColumn01, cColumn02, cColumn03)
values
('ajkfiemndiewnnsd,iewjendsncpwqe', 'ndnaseondcsnnwifdscnoewfnnxasoqwebc', '824dsladnan84ernlsnd32lndal'),
('dskdjlfrbv.xcmy.cmpewruwed pskqdaső3ö4urjfdlsac', 'nldfcsarhjöwjadaljdfwöerjqdfhzr', 'df 9r ö2jqwpdkapádkarfjhöw xo'),
(',asdfwriwepjdfcslanc9wzrigvbksjfnwoeirztgfbsckxlfhjreoj', 'dwoiru23öpjdéscmnweruwéj', 'cwéoiujwöx qwmd ewruö xwoédfjqwe w98r ')


declare
@cText varchar(max),
@nI int

declare @tblLetters table
(
cChar char(1)
)

declare curProcess cursor dynamic for
select
isnull(S.cColumn01, '')+isnull(S.cColumn02, '')+isnull(S.cColumn03, '')
from
#tmpString S

open curProcess
fetch next from curProcess into @cText

while @@fetch_status = 0
begin
set @nI = 1
while @nI <= len(@cText)
begin
insert into @tblLetters (cChar) values (substring(@cText, @nI, 1))
set @nI = @nI+1
end
fetch next from curProcess into @cText
end

close curProcess
deallocate curProcess
drop table #tmpString

select
L.cChar, nCount = count(*)
from
@tblLetters L
group by
L.cChar
order by
cChar

[ Szerkesztve ]

(#765) gabó válasza Atcom (#764) üzenetére


gabó
tag

Uhhh, köszönöm! Lehet,h nagy fába vágtam azt a bizonyost, mivel eddig csak pár select és egy egyéb egyszerű parancsot próbálgattam, de ez kicsit összetettebb. Hülye kérdés, de ezt a MySQL-ben h kérdezem le?

Nekem8

(#766) martonx válasza gabó (#763) üzenetére


martonx
veterán

Ez esetben lehet érdemes lenne elgondolkozni azon, hogy nem SQL-ben oldod meg a kigyűjtést, hanem valamilyen programnyelvben.
A csv-t elég könnyű bármilyen nyelven bejárni, és megszámolgatni a betűket.
SQL-ben ez eléggé az SQL megerőszakolásának tűnik. Ráadásul ez esetben lehet SQL-lel megoldva sem lesz hatékonyabb az adatfeldolgozás.

Egyébként igen MySQL-lel is le tudod kérdezni, csak át kell alakítanod a kapott T-SQL megoldást MySQL-nek tetszőre.

Én kérek elnézést!

(#767) varsam


varsam
őstag

Üdv,
Access-ben iif kifejezésben hogy tudok szövegrészletre szűrni?
Like "*valami*" szerű dolog kellene.

(#768) ArchElf válasza varsam (#767) üzenetére


ArchElf
addikt

asszem:
instr([mezőnév], "valami")>=0

AE

[ Szerkesztve ]

Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]

(#769) varsam válasza ArchElf (#768) üzenetére


varsam
őstag

köszi, ezt még nem ismerem, de ki fogom próbálni.
Most hirtelen úgy oldottam meg, hogy az első lekérdezésben csináltam egy külön oszlopot, ami true vagy false értéket kap, az alapján, hogy megegyezik-e a szöveg, konkrétan:
A: [név] Like "szöveg*"
Majd a következő lekérdezésben már ezt tudom szűrni iif-fel, hogy iif([A]=false,"akkor ez","különben az")

(#770) Apollo17hu


Apollo17hu
őstag

Sziasztok!

Kicsit eltér a témától, remélem befér a topikba a kérdésem.

Szeretnék PL/SQL Developert használni Win XP-n, otthoni számítógépemen. Elég kezdő vagyok, csak annyit tudok, hogy kellene alá valamilyen adatbázis szerver.

Hogyan tudok a legegyszerűbben "életet lehelni" a Developerbe? Kellene hozzá külön szervert is telepítenem? Mit ajánlotok?

(#771) bpx válasza Apollo17hu (#770) üzenetére


bpx
őstag

Oracle Express Edition [link]

(#772) martonx válasza Apollo17hu (#770) üzenetére


martonx
veterán

Ha már ismerkedés, akkor esetleg javaslom az MS SQL-t, MySQL-t és a PostgreSQL-t is kipróbálásra.

Én kérek elnézést!

(#773) ultio


ultio
senior tag

Sziasztok!

Nagyon kezdő vagyok a témában.
Adott egy lekérdezés Ms sql-ben, ahol személyeket megyénként kell lekérdezni.
Ha egy megye kódját adom meg, akkor rendben van. Hogy kell az összes megyét beletenni?
cou.COID=4 ezzel megy, de hogy írjam be az össze megyét egyszerre? (2=Baranya, 3=Borsod és így tovább).

Köszi!

u.

rasti rusti

(#774) varsam válasza ultio (#773) üzenetére


varsam
őstag

Nem kell külön megadni mind, a Select részben megadot a megyéket tartalmazó oszlop nevét, és ennyi

SELECT személynév, cou FROM tábla

[ Szerkesztve ]

(#775) Apollo17hu válasza ultio (#773) üzenetére


Apollo17hu
őstag

Ha listázni akarod a megyék mellé a személyeket is, akkor ORDER BY-jal rendezz a megyékre.
Ha a megyék mellé csak a személyek darabszáma kell, akkor a személynevek oszlopa helyett COUNT(*), a végén pedig GROUP BY a megyékre.

(#776) rum-cajsz válasza ultio (#773) üzenetére


rum-cajsz
őstag

Össze kell kapcsolni a két táblát.

Az oracle féle lusta szintaxis azt hiszem működik mssql alatt is:

select x.megyenev,y.szemelynev
from szemely y,megye x
where y.megyeid=x.megyeid;

ha nem, akkor a join parancs kell neked,

[ Szerkesztve ]

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

(#777) ultio


ultio
senior tag

Köszi mindenkinek a nagyon gyors választ!

A cou.COID=4 szűrést kellett törölni és listázta az összes megyét.

Köszönöm még egyszer!

u.

rasti rusti

(#778) Apollo17hu válasza martonx (#772) üzenetére


Apollo17hu
őstag

Van esetleg ezekről valamilyen leírás, ami mentén el tudnék indulni? Akár elmélet, akár telepítéssel kapcsolatos infók jól jönnének.

(#779) bpx válasza Apollo17hu (#778) üzenetére


bpx
őstag

persze, mindegyik termékhez a hivatalos a dokumentációban le van írva

(#780) szecska_


szecska_
csendes tag

Sziasztok,

Lenne egy SQL-es kérdésem, remélem tudtok segíteni.

Két táblám van mindkettőben csak 2 mező, h minél egyszerűbb legyen.
Első tábla:
hozzavalok, az alabbi mezoket tartalmazza
-alapanyag
-keszetel

Értelemszerűen azt mutatja meg, h adott kesz_etel elkészítéséhez milyen alapanyagokra van szükségünk. (természetesen mindkettő id, azaz ineteger tipusú). mindkettő többször is szerepelhet a táblában, hiszen egy kész étel több alapanyagot is tartalmazhat, és egy alapanyag több készételbe is kerülhet. Viszont egy alapanyag-keszetel pár csak egyszer szerepel, nincs két ugyanolyan rekord.

A második tábla:
kinek_mi_van_otthon, az alabbi mezokkel
-nev
-alapanyag

Melyben azt láthatjuk, h ki milyen alapanyagokkal rendelkezik. itt is igaz, ami az első táblánál, tehát: mindkét mező id, egy embernek több alapanyaga is lehet, ugyanaz az alapanyag egyszerre több embernek is birtokában lehet, de duplázódás nincs.

Egy olyan lekérdezést szeretnék összehozni, mely megadja, h mely emberek mely készételeket tudják elkészíteni. Itt ugye megint egyszerű a szabály, azokat a készételeket tudja elkészíteni adott ember, amelynek összes alapanyagával rendelkezik. Látszólag tök egyszerű a dolog, hiszen csak 2 tábla, 2 mező, de nekem valahogy mégsem jön össze.

Előre is köszi a segítséget!

Üdv, Szecska_

(#781) Atcom válasza szecska_ (#780) üzenetére


Atcom
csendes tag

Íme egy T-SQL megoldás. Sajnos nem volt elég időm rendesen kidolgozni, de remélem, hogy tudod majd használni.

create table [hozzavalok]
(
[keszetel_id] [int] not null,
[alapanyag_id] [int] not null,

constraint [PK_hozzavalok] primary key clustered
(
[keszetel_id], [alapanyag_id]
)
)

create table [kinek_mi_van_otthon]
(
[szemely_id] [int] not null,
[alapanyag_id] [int] not null,

constraint [PK_kinek_mi_van_otthon] primary key clustered
(
[szemely_id], [alapanyag_id]
)
)

insert into hozzavalok
values (1,1),
(1,2),
(1,3),
(2,3),
(2,4),
(3,1),
(3,5)

insert into kinek_mi_van_otthon
values (101,1),
(101,2),
(101,4),
(102,1),
(102,2),
(102,3),
(102,4),
(102,5),
(103,3),
(103,4)

select distinct
keszetel_id, szemely_id
from
-- Minden készételhez egy személy hozzárendelése
hozzavalok, (select distinct szemely_id from kinek_mi_van_otthon) sz
where -- Csak azok a személyek kellenek, akiknél minden megvan
not exists (
-- Azon személyek halmaza, akiknek valamelyik készétel alapanyagából hiánya van
select
*
from
(select
keszetel_id, alapanyag_id, szemely_id
from
-- Minden készétel alapanyaghoz egy személy hozzárendelése
hozzavalok, (select distinct szemely_id from kinek_mi_van_otthon) sz) hv
left outer join kinek_mi_van_otthon on kinek_mi_van_otthon.alapanyag_id = hv.alapanyag_id
and kinek_mi_van_otthon.szemely_id = hv.szemely_id
where
kinek_mi_van_otthon. szemely_id is null -- Azon személyek kellenek, akiknél valamiből hiány van
-- az adott készételnél
and hv.keszetel_id = hozzavalok.keszetel_id
and hv.szemely_id = sz.szemely_id
)
order by
hozzavalok.keszetel_id, sz.szemely_id


drop table hozzavalok
drop table kinek_mi_van_otthon

(#782) szecska_ válasza Atcom (#781) üzenetére


szecska_
csendes tag

Tökéletesen működik, köszönöm a gyors segítséget

[ Szerkesztve ]

(#783) Kommy


Kommy
veterán

Sziasztok!

nem tudom hogy jó helyen teszem fel e, de nem találtam jobbat a kérdésemre.

Lenne egy weboldal, amelyhez készülne egy program iOS-re, az oldal sql -t használ viszont a programhoz sqlite-ra lenne szükség (mivel ezt használja az IOS).

A program indításkor ellenőrizné a weboldalt, hogy van a frissített adatbázis és ha vana zt letöltené, ha nincs akkor menne a lementett adatbázissal, erre azért van szükség, hogy offline is használható legyena program.

Tehát a kérdés az az, hogy hogyan lehetne az sql-t sqlite-ba konvertálni.

(#784) rt06 válasza Kommy (#783) üzenetére


rt06
veterán

"Tehát a kérdés az az, hogy hogyan lehetne az sql-t sqlite-ba konvertálni."

ez a kerdes igy nem ertelmezheto, az sql a "Standard Query Language" roviditese, s a lekerdezesek definialasara valo
az sqlite meg egy konkret rdbms (relational database management system) megvalositasa, ami tobb-kevesebb sikerrel implementalja az SQL-t

a kerdes igazabol az, hogy milyen dbms-t hasznalsz a szerveren, s hogy ebbol hogyan lehet atpakolni az adatokat egy sqlite adatbazisba (a valasz meg az, hogy olyan sql utasitasok segitsegevel, amiket megfeleloen kezel mindket dbms-ed, illetve az, hogy esetleg a szerveren is hasznalhatsz sqlite-ot)

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

(#785) Kommy válasza rt06 (#784) üzenetére


Kommy
veterán

mysql vana szerveren.

(#786) rt06 válasza Kommy (#785) üzenetére


rt06
veterán

ugyan nem probaltam (google dobta), de mivel stackoverflow, egy probat meger: Bovebben: link

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

(#787) rum-cajsz válasza Kommy (#785) üzenetére


rum-cajsz
őstag

Ha esetleg túl melós a konverzió, esetleg az oldal is tudhat sqlite-ot használni. Ekkor lehet azonos az adatbázis.

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

(#788) Kommy válasza rum-cajsz (#787) üzenetére


Kommy
veterán

Erről tudsz nekem írni egy kicsit konkrétabban?

(#786) rt06: sajnons nem megy ezzel :((

[ Szerkesztve ]

(#789) martonx válasza Kommy (#783) üzenetére


martonx
veterán

Mennyi adat van a mysql-ben?
Ha néhány 10 sor és csak pár tábla, akkor javaslom, hogy a program minden indításkor szedje le mysql-ből az összes adatot, majd az adatokat tolja be az sqlite-ba.

Én kérek elnézést!

(#790) Kommy válasza martonx (#789) üzenetére


Kommy
veterán

kb 8000 sor van az egyik táblában amásik kettőben összesen 50 kb. lehet ez lesz a megoldás

(#791) Kommy válasza Kommy (#783) üzenetére


Kommy
veterán

sikerül átkonvertálnom egy script segítségvel közvetlenül aza eredeti adatbázisból. Igaz több napba kerül a megfelelő script megtalálása , de úgy érzem megérte az egész, így nem kell a weboldalon változtatni. Igaz mág csak sqlite browserban néztemde ott szépen megcsintja az adatbázis remélem fejlesztéskor sem lesz vele gond.

(#792) D@ni88


D@ni88
addikt

Hali, hogy lehet két dátum közötti eltelt napok számát számolni oracle-ben?

(#793) bpx válasza D@ni88 (#792) üzenetére


bpx
őstag

a dátumokat simán ki lehet vonni egymásból, amiből szám lesz
1 egész jelent 1 napot

SQL> select to_date('2011-10-12 08:00:00', 'YYYY-MM-DD HH24:MI:SS') - to_date('2011-10-01 19:00:00', 'YYYY-MM-DD HH24:MI:SS') from dual;

TO_DATE('2011-10-1208:00:00','YYYY-MM-DDHH24:MI:SS')-TO_DATE('2011-10-0119:00:00
--------------------------------------------------------------------------------
10.5416667

aztán ezt lehet még szépíteni ha szeretnéd, pl. trunc()

(#794) dellfanboy


dellfanboy
senior tag

használ itt vki pl-sql-t? ha igen az use hash parancs pontosan mire való?
idáig csak különböző selecteket irogattam, de most a fonok adott egy combosabb melot...

eladó dolgok:mondd az árát és vidd http://hardverapro.hu/tag/dellfanboy#aprohirdetesei

(#795) bpx válasza dellfanboy (#794) üzenetére


bpx
őstag

az nem parancs, hanem hint

select /*+ USE_HASH(t1 t2) */ t1.oszlop1, t2.oszlop2, ... from sema1.tabla1 t1, sema2.tabla2 t2
where t1.id = t2.id;

Oracle-ben az optimalizálót úgynevezett "hint"-ekkel lehet befolyásolni, hogy milyen végrehajtási tervet készítsen

a fenti példában mindenképp HASH JOIN-t fog használni a többi lehetőség (NESTED LOOPS, MERGE JOIN) helyett
az is látszik ugye, hogy kommentben van, nem parancs - ha hülyeséget írsz bele, egyszerűen figyelmen kívül hagyja
rengeteg ilyen hint van, olyan is, ami dokumentálva sincs

nem jó gyakorlat eleve ezekkel megírni egy utasítást, alapvetően ezek nélkül lenne jó megoldani mindent
én Oracle DBA-ként dolgozom, amikor valamelyik cégtől szólnak a fejlesztők, hogy lassú valamelyik SQL, akkor szoktuk hangolni, és hinteket használni ha szükséges

[ Szerkesztve ]

(#796) dellfanboy válasza bpx (#795) üzenetére


dellfanboy
senior tag

köszi! :R

eladó dolgok:mondd az árát és vidd http://hardverapro.hu/tag/dellfanboy#aprohirdetesei

(#797) hujni


hujni
csendes tag

Sziasztok!

Az a gond hogy a tanárnő túl későn adta meg a kérdéseket, így kevés időm van rá
ezért kérem a segítségeteket!

Tudnátok segíteni néhány lekérdezésben?
melyik cég rendelte a legtöbb szobát?
melyik cég hány éjszakát rendelt összesen?
hány szoba szabad ma éjszakára?
a legdrágább szobát kik rendelték már meg?
melyik szobák foglaltak az egész jövő hétre?

Köszi!

(#798) hujni


hujni
csendes tag

Egyáltalán jók a kapcsolatok! Azt mondjuk még mindig nem értem hogy ugye a foglalt táblában az iktatószám meghatározza a szobát és az időpontot is akkor hogyan foglalhatja le azt több cég is?

(#799) martonx válasza hujni (#797) üzenetére


martonx
veterán

ez túl sok kérdés volt. Nem hiszem, hogy bárkinek annyi ideje lenne, hogy helyetted megoldja a komplett feladatot.

Én kérek elnézést!

(#800) hujni válasza martonx (#799) üzenetére


hujni
csendes tag

nem kell mindegyiket csak légyszi segítsetek be! Az is jó ha csak egyet oldotok meg! Minden segítség jól jön. Az 1. már kész van! Én is folyamatosan csinálom csak most már azért kezdek álmos lenni. A tanárnő egy hetet adott a feladatra csak az enyémet most küldte el pár órája, mert elfelejtette.

Útvonal

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