Új hozzászólás Aktív témák
-
-
Agyasima
senior tag
Meglehetős kezdőként lenne kérdése, hogy az alábbi feladat megoldható-e valahogy SQL-ben:
Van egy "project" tábla, nevéből adódóan nagyobb feladatok összefogó táblája. Ehhez (ez alá) tartozik egy "feladatok" tábla és egy "találkozók" tábla. Egy projecthez jellemzően több feladat és találkozó tartozik.
Megjeleníthető-e egy SQL lekéréssel az egy projecthez tartozó feladatok és találkozók listája? Van erre vmi megoldás?
toledói csöcsparádé | ''Az ég kék volt, a szemed szürke, én zöldet hánytam...'' | Trutymó terror
-
-
martonx
veterán
válasz Agyasima #2406 üzenetére
Akkor a join-olásra vagy kíváncsi inkább? Vagy linkeljünk be egy SQL kezdőknek könyvet?
Egyáltalán kezdjük az elején, milyen SQL-ről beszélünk? MSSQL, MySql, PostgreSql, Oracle stb...Én kérek elnézést!
-
Agyasima
senior tag
válasz martonx #2407 üzenetére
Nem a joinolásra vagyok kíváncsi, sem egy kezdő SQL könyvre. Legalábbis most nem.
Arra vagyok kíváncsi, hogy amit én szeretnék megcsinálni - remélem érthetően írtam le, hogy az micsoda - megoldható-e 1 db SQL queryvel. (mySQL-ról van szó, és az ideális pedig az lenne, ha egy TOAD for MySQL lekéréssel el tudnám érni az eredményt.) És ha megoldható, akkor kb. hogyan.
[ Szerkesztve ]
toledói csöcsparádé | ''Az ég kék volt, a szemed szürke, én zöldet hánytam...'' | Trutymó terror
-
Sk8erPeter
nagyúr
válasz Agyasima #2404 üzenetére
Nincs olyan, hogy egy tábla "alá" tartozik egy másik tábla. Össze tudod kapcsolni őket, meg tudod határozni, ki kivel milyen kapcsolatban van, hol van idegen kulcs, stb., de fizikailag nem tartozik alá egyik sem a másiknak.
Az egy projekthez tartozó feladatok és találkozók listájának megjelenítése egyáltalán nem triviális. Gondolom a "project" tábla tartalmazza egy projekt tök általános adatait, főbb jellemzőit, van egy id-je. Aztán feltételezem, egy másik kapcsolótáblában a projekt id-je és egy feladat id-je össze van kapcsolva, vagy csak magában a "feladatok" táblában egyből szerepel berakva az egyik mezőbe a projekt id-je.
Aztán gondolom egy megint másik "talalkozok" táblában szerepel a projekt id, és a találkozó általános adatai, vagy megint csak egy kapcsolótábla van bevetve (de utóbbiról nem tettél említést, úgyhogy gondolom nincs ilyen különálló kapcsolótábla, nem is biztos, hogy kell, feladattól függ).Na de egy lekéréssel hogy akarnád ezt megjeleníteni? Miért lenne az neked jó?
Ömlesztve szerepeljenek a projekt általános adatai folyton ismétlődve, minden eredményhez, és legyenek hozzákapcsolva a feladatok, aztán a találkozók meg ki tudja, milyen megjelenés szerint látszanának?Mivel nem ismerjük a tábláid összetételét, és a leírásod meg teljesen általános volt, minden konkrétum nélkül, a feladatot sem pontosítottad, így mi sem tudunk konkrétumokkal szolgálni.
Sk8erPeter
-
Agyasima
senior tag
válasz Sk8erPeter #2410 üzenetére
és persze martonx-nek is: Értem. Igyekszem holnapra összerakni egy adag kicsit pontosabb információt. És persze köszönöm az eddigi segítő szándékot.
toledói csöcsparádé | ''Az ég kék volt, a szemed szürke, én zöldet hánytam...'' | Trutymó terror
-
-
DopeBob
addikt
Sziasztok,
PL\SQL lekérdezésben szeretném ugyan azt a bekért adatot többször felhasználni. Tudom valahogy tárolni? Semmi más eszközöm nincs, csak lekérdezés, egy programból lehet így adatokat kinyerni. Eddig a &valtozo megoldás volt többször használva, viszont a lekérdezés max karakterszáma is meg van szabva, így spórolnom kellene
MZ/X
-
DopeBob
addikt
válasz Apollo17hu #2416 üzenetére
egy régebbi könyvelő program, ahol lehet lekérdezéseket csinálni sql-el, max 1000 karakter vagy ekörüli. Egy évet és egy dátumot kellene bekérni, többször, viszont ebből adott hónap első és utolsó napja, meg köv hónap első és utolsó napja feltételek lesznek, több helyen is felhasználva, és így már elég sok karaktert elfoglalnak
MZ/X
-
Apollo17hu
őstag
válasz DopeBob #2417 üzenetére
Nem értem, ha feltételben kell használnod, akkor nem tudod megspórolni.
A &változó maga egyfajta tárolás, amikor beszúrod, egy hivatkozás kerül a kódba (nem tudom, helyes-e a megfogalmazás).
Én nem látom, hol lehetne rövidíteni a kódon (hacsaknem a szűrőfeltételeket fogalmazod át más logika mentén).
-
Agony
aktív tag
Sziasztok!
Most kezdtem ismerkedni az SQL lekérdezésekkel, mert a cégnél egyre többször van szükségünk olyan adatokra, amik alapesetben nem kinyerhetőek a vállalatirányítási rendszerből viszont egyéni lekérdezéssel hozzájuk lehet férni.
Csináltam egy értékesítésre vonatkozó lekérdezést, de kevesebb eredményt sort hoz, mint amennyi valójában van. 48520 rekordot kellene hoznia, de csak 46686-ot hoz.
Azt sikerült megtalálnom megtalálnom, hogy mi okozza, de már 1,5 órája guggolok afölött a 2 sor fölött és sehogy sem sikerül megvilágosodni.Ránéznétek a kódra, hogy mi az error?
A hibát ez a rész okozza, mert a k táblában az IDEGENMEGRSZAM mező nem minden esetben tartalmaz értéket, van ahol NULL. Ezért is próbálkoztam a LEFT JOIN-nal, mert a KUPONNÁL és KAMPÁNYNÁL is ez volt a helyzet és ott bevált.
LEFT JOIN BEREND g ON k.IDEGENMEGRSZAM = g.BIZONYLATSZAM
INNER JOIN (select BIZTIPUSKOD, BIZTIPUSNEV from BIZTIPUS i) i ON g.BTKOD = i.BIZTIPUSKODElőre is elnézést kérek, szakmai szemmel biztos nem egy gyönyör a kód, de csak amatőrködöm.
(SQL Server 2012 SP1)
Előre is köszönöm a segítséget!
Üdv,
Levi[ Szerkesztve ]
Start with a whisper, end with a scream!
-
Apollo17hu
őstag
Szia!
Ránézésre szerintem addig oké, hogy gyengén (LEFT JOIN) kötöd a {k} és a {g} táblát, de utána {k} -hoz is és {g} -hez is erősen (INNER JOIN) kötöd {i}-t és {j} -t. Ha elhagynád az {i} és a {j} tábla bekötését (vagy ha LEFT JOIN-nal kötnéd azokat is), akkor valószínűleg stimmelne a rekordszámod.
Egyébként a végén a dátumszűrést egyszerűbb úgy csinálni, hogy BETWEEN [kezdődátum] AND [végdátum].
[ Szerkesztve ]
-
Agony
aktív tag
válasz Apollo17hu #2420 üzenetére
Köszi, igy, hogy áttettem azokat is LEFT-re most jön a megfelelő mennyiségű rekord. Most nullával osztás miatt száll el, de valami a BEKERÁR körül van, mert azt kivéve, tökéletes.
Kapirgálok még egy kicsit, köszi!
[ Szerkesztve ]
Start with a whisper, end with a scream!
-
Agony
aktív tag
Meg is lett, csak a szerkesztés már inaktív lett. Vannak felvíve a számlákra kuponok is cikként amiknek 0Ft az ára, így viszont a
convert(varchar(20),cast((t.KEDV/t.EGYSAR)*100 as decimal(15,2))) as 'Kedvezmény (%)'
sor nullával osztás miatt elszáll, na de %-ot majd számolgat mindenki excelben.
Start with a whisper, end with a scream!
-
Apollo17hu
őstag
Ezeket a convert() meg cast() függvényeket mondták neked vagy magadtól használod? Nagyon ritkán találkozom velük, de szerintem nem is biztos, hogy szükség van rájuk.
A nullával osztást én úgy szoktam áthidalni, hogy elágazást írok rá:
CASE
WHEN nvl(t.EGYSAR, 0) = 0 THEN
NULL -- vagy amit szeretnél helyette
ELSE
convert(varchar(20),cast((t.KEDV/t.EGYSAR)*100 as decimal(15,2)))
END as 'Kedvezmény (%)'[ Szerkesztve ]
-
Agony
aktív tag
válasz Apollo17hu #2423 üzenetére
Azért raktam be őket, mert amúgy rengeteg felesleges számot hoz az oszlopokhoz. Pl. dátumokat másodpercekig lebontva, összegeket meg több mint 5 tizedesjegyig.
Végül a nullával osztásra is kitaláltam egy barkács megoldást, úgyhogy benne maradt a %-os Árrés is:
case t.EGYSAR < '1' then '0'
else convert(varchar(20),cast((t.KEDV/t.EGYSAR)*100 as decimal(15,2))) end as 'Kedv %',Lényegében ugyanaz mint amit te irtál, bár a tied szakszerűbbnek tűnik.
Start with a whisper, end with a scream!
-
Apollo17hu
őstag
dátumokat másodpercekig lebontva
to_date(dátummező, 'yyyymmdd')
vagy
trunc(dátummező)(valamelyik csak működik )
összegeket meg több mint 5 tizedesjegyig
trunc(összeg)
vagy
round(összeg,2)
vagy
floor(összeg) -
smallmer
őstag
Sziasztok,
oracle sql-ben szeretnék kérni egy kis segítséget tőletek.NEV GYUMOLCS
--------------------
Malacka alma
Micimackó alma
Malacka körte
Micimackó körte
Kanga körte
Tigris körte
Micimackó málna
Malacka málna
Kanga málna
Tigris málna
Nyuszi eper
Malacka eperKik szeretnek legalább háromféle gyümölcsöt?
köszönöm előre is
-
válasz Apollo17hu #2427 üzenetére
ehhez miért kell subselect és distinct?
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
DopeBob
addikt
Sziasztok,
PL/SQL-ben hogy tudnám megoldani, hogy egy bekért hónapot (száma) használjak oszlop azonosítóban? Pl beírom, hogy 3, van 4 eredményoszlopa a lekérdezésnek, az első 03, a többi pedig 04... stb. Egyszerűnek tűnt, mégsem megy
MZ/X
-
DopeBob
addikt
válasz Apollo17hu #2431 üzenetére
Ez a része oké, a következő hónappal van baj, ami a beírt + 1. Szépen ki is írja, hogy azonosítónak, hogy 3+1, de össze már nem adja
MZ/X
-
DopeBob
addikt
Van egy olyan lekérdezésem, aminél egy év és egy hónap a bekért adat, mondjuk cikkcsoportonként átlagot számol, ez egy oszlop. Ez mellé, ugyan azoknak a cikkcsoportoknak a következő hónapra tervezett adata is ott van, ennek az oszlopnak kéne egy normális nevet adni.
január február
alma 1 2
körte 3 4 stbsysdate-1 hónaptól indul és sysdate +3-ig tart, csak az elnevezésekkel szopok
[ Szerkesztve ]
MZ/X
-
-
sztanozs
veterán
jet sql-ben mi a dual megfelelője?
SELECT DATE() AS [Mai Nap] FROM idemikell??JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
smallmer
őstag
válasz Apollo17hu #2429 üzenetére
Nem házi volt gyakoroltam csak.
-
jocomen
aktív tag
MySQL adatbázis exportálásakor az .sql fájlba nem menti a FK megszorításokat, így beimportálva nincsenek kapcsolatok.
Van erre valami megoldás, h ne kelljen utólag, kézzel beleírni az sql-be a küső kulcsokat?[ Szerkesztve ]
-
quby
őstag
Sziasztok!
Alap szinten beszélek postgres-űl, és a következőre lenne szükségem. Van egy táblám amiben az egyik oszlop dátum (date) hogy tudok olyan lekérdezést irni amiben az egyik feltétel a hét napja - pl:monday
pl select * from table where (dátummező=monday).A legügyesebb állat az ürge, hiszen búzával teli pofazacskóval is képes repülni, miközben egy bagolyt egyensúlyoz a hátán.
-
nábob
tag
Sziasztok,
Ismertek valami ingyenes legalább 25-50MB-os tárhelyű, külső szerverről elérhető mySQL adatbázis providert?
Harap utca három alatt megnyílott a kutyatár
-
DS39
nagyúr
üdv!
szeretnék egy olyan lekérdezést írni, amivel olyan listát kapok, mint itt PH-n a topikok listája, tehát hogy a bennük található utolsó hozzászólás dátuma szerint legyen rendezve.
ebből indultam ki:
SELECT t.id, t.topic_name, p.send_date
FROM topics AS t, posts AS p
WHERE t.id=p.topic_id
ORDER BY p.send_date DESC
LIMIT 0, 10ez így okés, viszont értelemszerűen minden topik többször szerepel, mert egy azon topikban lehet több friss hsz ugye. ennek kiküszöbölésére két dolgot próbáltam:
1: SELECT DISTINCT t.id, ...
2: ... GROUP BY t.id ...
a többi kódrészlet maradt.
az eredmény az lett hogy most már valóban csak egyszer szerepel minden topik a listában, viszont nem az eredeti lekérdezés szerinti sorrendben, hiába a DESC, minden topic ID-hoz fogta és első első találatot lehozza (ami a legelső hsz), majd ezeket rendezi csökkenőben.
gondoltam hogy belső select-ezni kellene esetleg, de nem jöttem rá a megoldásra. tudnátok ebben segíteni? köszi előre is.
-
-
sztanozs
veterán
SELECT t.id, t.topic_name, p.lastpost
FROM topics AS t, (
SELECT topic_id, max(p.send_date) as lastpost
FROM posts
GROUP BY topic_id
ORDER BY lastpost DESC
LIMIT 0, 10) AS p
WHERE t.id=p.topic_id[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...