Új hozzászólás Aktív témák
-
-
DS39
nagyúr
válasz sityupityka #2798 üzenetére
engem érdekelne milyen számokat fognak kihúzni szombaton (5-ös lottó)
-
gerg0
aktív tag
Sziasztok,
Szükségem lenne egy kis segítségre, adott 3 lekérdezés, amik különböző result set-eket adnak (csak a where feltételek mások), a 3 result set-et szeretném egy temp táblában megjeleníteni egymás mellett.
Egy példa:
'a' lekérdezésben ezek az eredmények vannak: 1,2,3,4
'b' lekérdezésben pedig ezek: 5,6
'c'-ben pedig ezek: 7,8,9Én azt szeretném, ha ez így jelenne meg:
a-b-c
1-5-7
2-6-8
3-null-9
4-null-nullTudnátok segíteni, hogyan lehetne megoldani?
Köszönöm[ Szerkesztve ]
-
Apollo17hu
őstag
Valamivel kötnöd kellene a 3 lekérdezést (--> táblát).
Nekem elsőre az az ötletem, hogy vedd azt a lekérdezést, ahol COUNT(*) értéke a legnagyobb, egészítsd ki egy sorszám oszloppal - akár rank() analitikus függvénnyel, de talán a rownum is alkalmas rá -, majd a másik két lekérdezést - szintén sorszám oszloppal kiegészítve - kösd az előbbihez gyengén.
-
-=Flatline=-
tag
Sziasztok!
Előre is köszönöm a segítséget. Viszonylag (nekem) komplex queryt kellene építenem és a segítségeteket kérném. Egy free wordpress plugin hiányosságait szeretném adatbázisban fixelni és attól tartok egyedül nem fog menni. Az most sajnos kivitelezhetetlen, hogy maga a plugin kód változzon és ez a query ami hiányzik csak egyszer, pont éjfélkor fut le, szóval nem folyamtos nyilván.
Itt az SQLfiddle, az adatbázis struktúrával. A következőt szeretném elérni:
http://sqlfiddle.com/#!9/1c3b4
Meg kell keressek minden felhasználót név alapján, aki ugyanazon a napon, adott kvízID-vel HELYES=1 rekordot kapott. Jelen esetben ez
SELECT * FROM prohardver WHERE kvizID=4 AND time >= '2015-04-01 00:00:00' AND time <= '2015-04-01 23:59:59'
Amennyiben egy felhasználó több helyes értékkel is rendelkezik adott napon, vagy akár mellé helyes=0 sorral is, szeretném törölni mindegyik nem helyes sort ÉS egyetlen egy helyes=1 sort megtartani, amelyik a legkorábbi az adott napi dátum alapján. A fiddle-ben ez azt jelenti, hogy a végeredmény táblában az ötös sort tartjuk meg, míg az összes többi Flatline nevű törlődik.(Adott napra vonatkozólag) Mivel a query-nek minden nevet végig kellene néznie, ezért a Funny nevű is pontszámot kap, míg Lacey nem, mert az nem adott napon történő rekord.
Ezen felül, amint már csak egy sor van adott névhez, a PONT oszlopot ezen egy megmaradt sorban szeretném updatelni az alapján, hogy a time mező mit mutat., azaz 8 óránként eltérő pontszám, így:
SET pont = 150 WHERE time >= '2015-04-01 00:00:00' AND time <= '2015-04-01 08:00:00'
SET pont = 100 WHERE time >= '2015-04-01 08:00:00' AND time <= '2015-04-01 16:00:00'
SET pont = 50 WHERE time >= '2015-04-01 16:00:00' AND time <= '2015-04-01 23:59:59'Tudom ez egy picit sok, de a segítségeteket kérem, remélem a fiddle könnyebbé teszi.
Much appreciated!
[ Szerkesztve ]
Calm Sea Doesn't Breed Skilled Sailors
-
-=Flatline=-
tag
válasz -=Flatline=- #2809 üzenetére
No szép, az updatelt fiddlet már nem tudtam beleszerkeszteni, ímhol:
[ Szerkesztve ]
Calm Sea Doesn't Breed Skilled Sailors
-
Apollo17hu
őstag
válasz -=Flatline=- #2810 üzenetére
MySQL-t nem vágom, Oracle-ben a rank() függvénnyel lehetne megoldani valahogy így:
select rank() over (partition by t.kvizid, t.name, trunc(t.time) order by t.time) as sorrend
Ez egy olyan oszlopot generálna neked, ahol kvízenként, azon belül userenként, azon belül naponta minden egyes választ sorba rendez időpont alapján. Erre az oszlopra szűrve - ha előtte rászűrtél, hogy a teljes listából csak a helyes válaszokra van szükséged - elég csak az '1' értékeket megtartani, mivel ezek lesznek adott kvízhez adott napon adott user első helyes válaszai.
Tehát a dolgod, hogy keress valami sorrendfüggvényt MySQL-ben...
-
-=Flatline=-
tag
-
Ispy
veterán
válasz -=Flatline=- #2809 üzenetére
Most akkor egy view kell neked, vagy egy tárolt eljárás?
"Debugging is like being the detective in a crime movie where you're also the murderer."
-
rum-cajsz
őstag
válasz -=Flatline=- #2810 üzenetére
Ha jól értelek, akkor felhasználónként a legkorábbi helyes tipp kell, az ez (kicsit bőbeszédűen):
select kvizid,name,
DATE_FORMAT(time, '%Y-%m-%d') as Day,
min(time) as Időpont
from prohardver
where helyes=1
group by kvizid,name,DATE_FORMAT(NOW(), '%Y-%m-%d');=Kilroy was here============================ooO=*(_)*=Ooo=======
-
zolynet
addikt
válasz rum-cajsz #2814 üzenetére
Még 1 megoldás:
select top 1 * from prohardver
where helyes=1
order by time descsorszám oszlop bővítéssel, itt még nincs leszűrve arra hogy 1 rekordot adjon 1 user-re, de view-nak jó alap:
select *,ROW_NUMBER() over (order by time desc) sorszam
from prohardver
where helyes = 1
order by sorszamIdőre lehet használni a MAX függvényt is ha nem top 1-el akarunk játszani.
még1
select kvizid,name,
convert(char(10),time,120) as időpont
from prohardver
where helyes=1
group by kvizid,name,convert(char(10),time,120)[ Szerkesztve ]
Life is too short to stay stock!
-
-=Flatline=-
tag
-
zolynet
addikt
válasz -=Flatline=- #2817 üzenetére
Első alapvető tézis: DB-ban nem törlünk!
Ott van a helyes (0,1) indikátor, pont jó erre. Inkább azt update-d."pontozás 3 update-je megoldható egy körben?" - ezt teljesen nem értem hogy mit szeretnél
Life is too short to stay stock!
-
-=Flatline=-
tag
válasz zolynet #2818 üzenetére
Egyetértek, de nincs más megoldás és ez egy relatíve átmeneti megoldás, míg a plugint továbbfejlesztik... Mivel az adott struktúra, ha bennehagyom megzavarja a leaderboard kéréseket és gagyi eredményt adna, muszáj törölni. (Esetleg egy deleted 0 / 1 oszlopot be tudok varázsolni egye fene, de akkor kérek szépen kiegészítést az előző megoldáshoz, ami updateli mindet, kivéve a várt eredményt. tehát a várt eredmény a deleted=0, a tÖbbi deleted=1)
[ Szerkesztve ]
Calm Sea Doesn't Breed Skilled Sailors
-
-=Flatline=-
tag
válasz zolynet #2818 üzenetére
Hello!
Odáig már megvan a dolog általatok, hogy megkeressük az adott napi első válaszadási időpontot per júzer per day per kvízID. Az időponttól függően, azaz, ha éjféltől nyolcig, nyolctól délután négyig és négytől éjfélig jött a helyes válasz, különböző pontokat írunk bele a végeredmény egy sorunkba. 150et 100at és 50et respectively.
Zsolya: Azért nem ilyen egyszerű a képlet, mert ez egy sokkal összetettebb adatbázis része, amiből ezt emeltem ki, mert erre van szükség. Nem elég csak a helyes mezőt használni, ez egy kvízrendszer része. És a kvízrendszer pluginja olyan hivatkozásokat küld, aminek nem megfelelő eredményt ad, ha csak a helyes mezőket váltogatom és bentmaradnak a nem helyes, vagy több instance helyes válaszok.
Kizárólag az segít, amit a legelső posztban kértem és tisztában vagyok vele, hogy nem törlünk direktben, de nem is a "lecke" része volt a cél, így akármilyen unorthodox, azt szeretném elérni, amit fent leírtam. Mély tisztelettel:
Flat
[ Szerkesztve ]
Calm Sea Doesn't Breed Skilled Sailors
-
zolynet
addikt
válasz -=Flatline=- #2820 üzenetére
Először próbáld meg, aztán ha nem megy segítünk.
CASELife is too short to stay stock!
-
zolynet
addikt
válasz -=Flatline=- #2822 üzenetére
select kvizid,name,time, substring(convert(char(20), time,120),12,2) DT,
case when substring(convert(char(20), time,120),12,2) between '01' and '08' then '150'
when substring(convert(char(20), time,120),12,2) between '08' and '16' then '100'
when substring(convert(char(20), time,120),12,2) between '16' and '23' then '50' end [DT_point]
from prohardver
where helyes=1Life is too short to stay stock!
-
martonx
veterán
Sziasztok!
Keresnék szabadúszó MS SQL fejlesztőt. Néhány órás munkáról lenne csak szó (egy szakértőnek, ennek megfelelő díjazásért). Én is meg tudnám csinálni, de nem akarom magam tovább aprózni
Priviben várom a jelentkezőket!
Én kérek elnézést!
-
beni26k
csendes tag
Beteszem ide is, hátha valakinek van valami jó ötlete.
Probléma:[link]
Többször is letöltöttem a forrásfájlt de mindig ugyan ez a hiba. Csak szövegként fogadja el, számként, decimálisként nem tudom importálni. MySQL 5.6.22
Ez miért lehet ?
[ Szerkesztve ]
-
Apollo17hu
őstag
válasz beni26k #2826 üzenetére
Csak egy nagyon távoli tipp, hátha valakinek beugrik, mi okozza a problémát:
Nem lehet, hogy az alkalmazások eltérő tizedesjelölőt használnak, és ami az egyikben szám, azt a másik csak szövegként tudja értelmezni? (Munkahelyen volt ilyen gondom, ott a Windows területi beállításai tértek el az adatbáziskezelő nls-paramétereitől.) -
Diopapa
addikt
válasz Apollo17hu #2827 üzenetére
Pontosan ez a gond. A vesszőket át kell konvertálni pontra és utána jó lesz.
Citizen Diopapa / Commander Diopapa "SC csomag olyan, mint a barackfa, unokáidnak veszed - .tnm / De pálinkát nemlehet főzni belűle - *SkyS1gn"
-
beni26k
csendes tag
válasz Apollo17hu #2827 üzenetére
Ha a Basenél nem MySQLt használok, hanem a gyári HSQL motort, akkor simán engedi decimálissá való változtatást. Itt valami SQLel van. A másik dolog, hogy egy későbbi érettségiben, a 2013-masban is van egy olyan tábla, amiben területek vannak, vesszővel (pl 1215,36) és ott engedi importálni decimálisba, pedig ott is MySQLt használtam. Kipróbálom majd a ponttá alakítást előtte excelben (csvként importálom excelbe utána beillesztem basebe). Mindegyik szöveg UTF-8 kódolású.
-
beni26k
csendes tag
válasz Apollo17hu #2827 üzenetére
csvként megnyitottam libreoffice calcban ott frekvencia és teljesítmény oszlopot kijelöltem és átírtam a cellaformátumot standard magyar számról standard amerikaira és utána normálisan beimportálta. Pedig a kettő teljesen ugyanúgy néz ki Nem kellett pontozni, se semmi.
Ha véletlenül előjön az érettségin legalább tudom mit kell tenni.
-
beni26k
csendes tag
válasz Apollo17hu #2831 üzenetére
Azóta hál istennek minden érettségi forrás jó volt. Szerintem ott valamit elcsesztek. A másik dolog, előre félek attól, hogy kitől fogok kapni az MySQLhez adminpwt, mert kétlem, hogy az ott jelenlévő magyaros/matekos/földrajzos felügyelőtanár tud majd nekem ebben segíteni..
[ Szerkesztve ]
-
jocomen
aktív tag
MySQL adatbázis-szerkezettel kapcsolatos kérdésem lenne: jó-e a következő szerkezet?
Főleg a `dijszabas` tábla kapcsolatai nyugtalanítanak, mert így 2 tábla közt elkerülő út jön létre, ami tudtommal hiba. Vagy melyik másik táblába lehetne elhelyezni a `dijszabas.osszeg` oszlopot?Egy barátomnak segítenék, aki most fog vizsgázni.
[ Szerkesztve ]
-
jocomen
aktív tag
válasz Apollo17hu #2834 üzenetére
Igen. A mintapélda alapján, kategórián (metsző, kisörlő, nagyörlő) végzett műveletenként (húzás, tömés) van megállapítva a díj.
Eredetileg 4 tábla volt a példában, kapcsolatok nélkül (fogak, műveletek, díjszabás, beavatkozás). Én bontottam külön a kategória táblát redundancia miatt, ill. egészítettem ki egyéb táblákkal, h minél közelebb legyen a valósághoz.[ Szerkesztve ]
-
jocomen
aktív tag
válasz jocomen #2835 üzenetére
Bocsánat!
Ezek voltak eredetileg, kapcsolatok nélkül (így kellett lekérdezéseket írjanak):PACIENS
p_id
nem
szuldat
KATEGORIA
hely
fog_nev
kategoria_nev
DIJSZABAS
kategoria_nev
muvelet
osszeg
BEAVATKOZAS
id
p_id
irany
szint
hely
orvos
muvelet
datumVagyis semmi sincs kőbe vésve, csak legyen jó a szerkezet és a kapcsolatok.
[ Szerkesztve ]
-
válasz jocomen #2833 üzenetére
engem az zavar, hogy a dijszabas táblából a kategória_id és a művelet_id varchar mezők int mezőkhöz kapcsolódnak.
szerk: meg ha rajtam múlna, minden összeg mellé tennék egy áfa kulcs és egy pénznem mezőt, a beavatkozások mellé sz.j. szám mezőt is.
[ Szerkesztve ]
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
-
jocomen
aktív tag
válasz bambano #2838 üzenetére
Köszönöm az észrevételeket, a hibákat javítom. Az "sz.j." mező mit takarna?
#Apollo17hu: Nem tuodm, hogy jó-e, számomra az a fura, hogy a [dijszabas] táblából az összeg nem jelenik meg a [beavatkozas] táblában, a [szamla_tetel] táblában viszont már igen.
Az `osszeg` nem külső kulcs a [szamla_tetel] táblában, ezért nem éreztem úgy, h közvetlen kapcsolat kellene, és oda tettem, ahová leginkább valónak éreztem.A fő problémámra, a kerülő útvonal megszüntetésére akkor nincs senkinek ötlete?
[ Szerkesztve ]
-
#30734848
törölt tag
Distinct és Group by között mi jelenthet különbséget egy lekérdezés során az eredmények számában?
-
-
Szmeby
tag
válasz jocomen #2840 üzenetére
Talán azért van ez így, mert nincs különösebb oka a beavatkozás és a számla tétel táblák szétválasztásának. Vagy mégis?
Például a díjszabás forintban kerül megállapításra, a beavatkozás ezen leíró tábla alapján egyértelműen beárazható (szerintem a lehető leghamarabb érdemes jelölni a kiszabott árat). Viszont az ügyfél eurós számlát kér, vagyis a számla tételben már euróban kell szerepelnie az összegnek. Az meg már tiszta sor, hogy a számla fejen lévő összeg a számla tételeket összegzi.
És ha már a valutakonveziónál járunk, ahhoz asszem illene egy teljesítés dátuma mező, ami alapján meghatározható, hogy melyik napi árfolyam alapján történt a konverzió.
Ha jól látom, a rendszer jelenleg nem kezeli a sztornó és helyesbítő számlát sem, ehhez is elkelne majd pár új mező (pl. számla típusa, számlák egymásra hivatkozása, ilyesmi).
Vagy a proginak nem lesz köze a számlázáshoz?Formailag nekem pl. nem tetszik, hogy bizonyos táblanevek egyes számban, mások meg többes számban szerepelnek, és nem látom az okát. Kevés olyan tábla van egy adatbázisban, amiben csak egy sor van, totál felesleges belekeverni a számosságot a táblanévbe, bátran lehet mindegyik egyes számú.
Ha nagyon zavar a kerülő útvonal, hát egyesítsd a táblákat. Pl. úgy, hogy eltörlöd a kategóriát (az legfeljebb a fogon szerepel mint plusz információ), a díjakat pedig foganként adod meg. Nincs olyan sok fogunk, hogy ez drasztikus mértékben rontaná a teljesítményt. Persze ha igény van arra, hogy kategóriához adunk meg árat, akkor ne tedd.
Megjegyzem, hogy mindig is utáltam a normalizálós feladatokat a suliban, és nincs is benne gyakorlatom, ezért csak módjával hallgass a hülyeségeimre.
-
-
Szmeby
tag
válasz bambano #2845 üzenetére
A redundancia növeli a biztonságot, az integritást.
Ugyan hibát nem javít, de jelzi, ha teszemazt valaki kézzel belenyúlt és átírt egy összeget (és persze trehány módon elfelejtette átírni a többi hivatkozott összeget is).
Egy "hús-vér" (vagyis papír) számlán is szerepelnek tételesen a részösszegek, és a végösszeg is.
Nem érzem ezt annyira ördögtől valónak. -
dellfanboy
senior tag
sziasztok
van egy select lekérdezésem és szeretném automatizálni hogy:
pl. minden hét hétfő reggel lefusson és az eredményt lementse xls formátumban a merevlemezre.
ezt hogy tudnám kivitelezni. a számitógépem ki lenne kapcsolva és a szerveren kellene automatikusan futnia.eladó dolgok:mondd az árát és vidd http://hardverapro.hu/tag/dellfanboy#aprohirdetesei
-
PumpkinSeed
addikt
válasz dellfanboy #2847 üzenetére
"Akinek elég bátorsága és türelme van ahhoz, hogy egész életében a sötétségbe nézzen, elsőként fogja meglátni benne a fény felvillanását." - Kán
-
pittbaba
aktív tag
Sziasztok!
Elég érdekes kérdésbe futottam:
Apróhirdető oldal, szűrések.
Vannak kategóriák, a kategóriáknak pedig sajátos mezői, pl ha ingatlant választ, akkor kijön h szobák száma, ha autót választ akkor futott kilóméter stb, kb ezer ilyen custom mező jelenhet meg.
Mivel ez nem lehet egy táblában termékenként 1000 oszlopban tárolni, ezért a custom paramétereket úgy tárolom, hogy egy külön táblában elmentem az adott hirdetés id-ját, az adott paraméter nevét (custom_szobakszama, custom_kilomterek), és a hozzá tartozó értéket.
Ez rendben is van, menti szépen, visszatölti szépen szerkesztésnél stb stb...Kérdésem az lenne, hogy hogy tudok ez alapján szűrni, keresni?
Pl:
Hirdetések tábla:
id,feltöltő_id,hirdetés címe,hirdetés szövege,dátum,kategória1,kategória2,kategória3,
1,110,Ingatlan hirdetés,Hirdetésem szövege,2015.10.10,45
2,110,Autó hirdetés,Hirdetésem szövege,2015.10.11,48Custom mezők tábla
id,hirdetés_id,mező_neve,érték
1,1,szobak_szama,3
2,1,terulet,32
3,2,kmora,10000
4,2,loero,10Ossze van joinolva 3 kategora tabla, es a user tabla is, ebbe a lekérdezésbe kellene megoldani, hogy WHERE-el keresni tudjak a customs mezők tábla alapján is. Pl ha az összes olyan hirdetést akarom ahol a szobak_szama =3 azt hogy tudom lekérni?
Előre is köszi.
Esküszöm megkeresném, mint mindig mindent, de ezt most fogalmam sincs hogy írjam be[ Szerkesztve ]
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
Szmeby
tag
válasz pittbaba #2849 üzenetére
Ilyesmire gondoltál?
select *
from hirdetes h
inner join user u on u.id = h.userid
inner join kategoria1 k1 on k1.id = h.kategoria1
inner join kategoria2 k2 on k2.id = h.kategoria2
inner join kategoria3 k3 on k3.id = h.kategoria3
inner join custom c on c.hirdetes_id = h.id
where c.mezo_neve = 'szobak_szama' and c.ertek = 3;Egyébként nem lenne ésszerűbb az egymástól független fogalmakat külön táblában tárolni?
Vagyis külön tábla az ingatlan hirdetéseknek, külön az autóknak, stb.
És akkor lehet minden szépen field. Az úgy már csak nem olyan sok.
Új hozzászólás Aktív témák
- Mikrotik routerek
- Mobil flották
- Politika
- Miért vezet mindenki úgy, mint egy állat?
- Suzuki topik
- Samsung Galaxy S23 Ultra - non plus ultra
- A Microsoft feltalálta az olcsó AI-t
- Garmin Forerunner 165 - alapozó edzés
- Olasz autó topik (Fiat, Lancia, Alfa)
- Ventilátorok - Ház, CPU (borda, radiátor), VGA
- További aktív témák...