Új hozzászólás Aktív témák
-
Louro
őstag
válasz
shipfolt #5971 üzenetére
Tanulási vagy munkacél? Utóbbira a licensz lehet probléma.
Előbbire:
- nagyon alapokra az sqlzoo.net oldalon az alap sql-t elég jól meg lehet tanulni.
- ha már kicsit komolyabb tanulás a cél, akkor a Microsoftnak az sql server management studio elérhető. Van hozzá egy egész jó példa adatbázis is, amit adventureworks néven találsz meg. (Telepítés kicsit ijesztő lehet.)
- ha youtuberek is beleférnek ide, akkor Pinal Dave és Bert Wagner egész jó videókat készítettek már.Mess with the best / Die like the rest
-
sztanozs
veterán
válasz
shipfolt #5968 üzenetére
Szerintem aki neked Access-t tanitott "adatbazis" cimen, annak nem volt fogalma arrol, hogy az Access kb annyira adatbazis-kezelo, mint ahogy egy kockas fuzet Excel workbook...
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...
-
shipfolt
kezdő
válasz
bambano #5967 üzenetére
Ja, hogy azt o akkor irta, amikor SQL-nek meg hire-hamva se volt.
Jol sejtettem, hogy hogy nem SQL-lel, hanem adatkezelessel van problemamsztanozs:
Nekem azt tanitottak, hogy SQL-ben tablak osszekapcsolasa reven lehet urlapok letrehozasa reven adatokat kezelni. (Access)Most utana olvasva lattam, hogy van egy kozvetlen modszer is, amikor SQL-ben futtathato programokat kell irni, es feltetelek reven nagyon egyszeruen lehet adatokat modositani.
Ezt veszelyesnek tartom, mert barmikor barmilyen adatot felul lehet irni, nem is marad nyoma, hogy ki es mikor csinalta, mert a program csak addig el, amig az illeto begepeli es lefuttatja, nincs elmentve, mint egy urlap.[ Szerkesztve ]
-
sztanozs
veterán
válasz
shipfolt #5965 üzenetére
Bambanonek kudos, hogy leirta, de szvsz faszerkezet - illetve rekurziv struktura - SQL megvalositasa nem akkora raketatudomany, mint aminek latszik. Legfeljebb csak nem talakoztal meg vele...
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...
-
pch
senior tag
válasz
shipfolt #5962 üzenetére
Én az alábbit csinálnám:
ID: auto increment
Feladat: varchar(255)
Leírás: text
Határidő: date
Kész: enum('n';'i')
Sor: int(10)
Függ: int(10) NULLBeírod a feladatot. Ha rendezni kell akkor a sor mondja meg hol van (tizessével szoktam számolni, de ha fel kell cserélni 2 sort akkor ugye update és kész)
A függ-be ha van érték akkor az az adott ID-jű feladattól függ, ha nincs akkor nincs függése.
A függésre nézz olyan példát ahol egy menü van táblázatba. Na ez is olyan Főmenű + almenű. Csak itt ugye feladat lezárása előtt le kell kérdezni, hogy a függő feladat (aminek ugye tudjuk az ID-jét) kész-e. Ha igen mehet a feladat rögzítése benne a függő ID-vel.http://sb-soft.hu - "A" számlázó
-
Magnat
veterán
válasz
shipfolt #5962 üzenetére
Szia,
"De, amikor be kell allitani, akkor valahogy ra kell keresni minimum az "ID + megnevezes" mezokre, es nem latok arra lehetoseget, hogy ugyanabban a tablaban keressek, aminek az egyik rekordjat megnyitottam szerkesztesre." - no offense, de ez nem igazán sql kérdés, ez már annak az eszköznek a funkcionalitásának a függvénye, amiben a megoldást fejleszted. Sql kliens-szerver kontextusban egyébként sincs olyan, h valamit megnyitottál szerkesztésre, mármint létezik rekord és tábla lock is összetett tranzakcióknál, de ez amit leírtál a valóságban sztem tipikusan úgy néz ki, h kiadsz egy selectet bizonyos filterrel, amivel listázod a feladatokat, aztán amikor az egyiknek ki akarod jelölni a szülőjét, akkor adott kritérium szerint kiadsz egy másik selectet ez esetben ugyanarra a táblára valamilyen más szűréssel, aztán ha kiválasztotta a user, h melyik lesz a szülője, akkor kiadsz egy update-ot a megfelelő rekordra és beírod a kiválasztott szülő rekord id-ját a megfelelő mezőbe.
Ezen 3 művelet közben nem lesz megnyitva szerkesztésre az adott rekord (ideális megközelítésben legalábbis semmiképpen), hanem az sql szerver közben teszi a dolgát és amikor kiadod az update-ot a megfelelő rekordra, akkor megfogja és megcsinálja.
Triggerelést én is elengedném ezzel a problémával kapcsolatosan.[ Szerkesztve ]
̿' ̿'\̵͇̿̿\з=(◕_◕)=ε/̵͇̿̿/'̿'̿ ̿
-
shipfolt
kezdő
válasz
bambano #5961 üzenetére
Wow, beinditottam a forumot.
Koszonom a javaslatokat, harom problemam van ezekkel.
Az elso, hogy meg erosen kezdo vagyok, a triggerekrol kosza hirek erejeig hallottam.
(Az adatbazis kiepitesenel lecovekeltem, mert furcsasagokat lattam kulonbozo konyvekben, de ezt most hagyjuk.)A masodik az "elmelet es gyakorlat" utkozese:
Ha elkezded bontani a feladatot, berakod a fő feladatot a táblázatba, megjegyzed az id-jét, és amikor a fő feladat alfeladatait rakod bele, akkor az elozo_id mezőbe beleírod a megjegyzett id-t.
Ez a gyakorlatban nem igy mukodik, hanem harom lepesben megy:
Eloszor belapatolod a feladatokat hevenyeszett hataridokkel,
majd jon a felulvizsgalat, hogy mennyi feladat van es mennyi ido,
majd jonnek a kivalasztasok, hogy miket lehet gyorsan megoldani, vagy melyek valoban fontosak, vagy melyiknel van rovid hatarido, ezeket elore veszik.
Csak ekkor jon a felulvizsgalat, hogy milyen kapcsolatok vannak kulonbozo szempontok alapjan, es ha ez a fontos, akkor ehhez mely masik szukseges vagy megoldhato, tehat a prioritasok erosen valtoznak hangulatok vagy kotelezettsegek valtozasa miatt.
A harmadik, amivel bajban vagyok az az, hogy ezt a megoldast a gyakorlatban hogyan tudom megoldani?
Beiraskor egyszeru, az "elozo ID" mezo uresen marad (lehet null feltetel kell ra)
De, amikor be kell allitani, akkor valahogy ra kell keresni minimum az "ID + megnevezes" mezokre, es nem latok arra lehetoseget, hogy ugyanabban a tablaban keressek, aminek az egyik rekordjat megnyitottam szerkesztesre.Ezt hogyan lehet megoldani?
Ha fontos, akkor Access 2007-en kezdtem tanulgatni, mert annal konnyu a tablakat beallitani es a kozottuk levo kapcsolatokat vizualisan megjeleniteni, nemreg kezdtem a Libreoffice Base-t hasznalni.
-
bambano
titán
válasz
shipfolt #5959 üzenetére
ID
Elozo_id
megnevezés
leiras
hatarido
lezart?nem kell két különböző sort egy rekordba rakni. a rekord szerkezet az adatod szerkezetével kell megegyezzen.
Ha elkezded bontani a feladatot, berakod a fő feladatot a táblázatba, megjegyzed az id-jét, és amikor a fő feladat alfeladatait rakod bele, akkor az elozo_id mezőbe beleírod a megjegyzett id-t.
Amikor le akarod zárni a feladatot, akkor meg kell nézni, hogy az a feladat, amelyik az elozo_id-ben van, le van-e zárva.
Szerintem trigger erre felesleges.
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
Louro
őstag
válasz
shipfolt #5959 üzenetére
Én úgynevezett triggerben gondolkodnék elsőre.
bambano iránya tényleg jó, hidd el. Legyen egy új oszlopod, aminek a neve Esemény. Az egyszerűség kedvéért számokkal érdemes jelölni, de ha kicsi a tábla és van dögivel hely és kakaó, akkor szövegesen is beírhatod.
Szóval ez úgy nézne ki, hogy tegyük fel az első eseményed: létrehozás. Azaz itt létrehozod a feladatot (ID). Második esemény lehet mondjuk a feladatkiosztás. Itt legyen az a feltétel, hogy ha a Hatarido kitöltésre kerül.
CREATE TRIGGER séma.triggerNeve
ON séma.táblaNeve
AFTER UPDATE AS
BEGIN
SET NOCOUNT ON;
IF UPDATE (Hatarido)
BEGIN
UPDATE séma.táblaNeve
SET Esemeny = 'Feladatkiosztás'
FROM séma.táblaNeve S
INNER JOIN Inserted I
ON S.ID = I.ID
END
ENDMásik gondolatom a feladatot sokadszor olvasva, hogy azt akarod, hogy van a táblád és ha másik táblában rögzítenek Eseményt, akkor az a tábládon hajtson végre valamit. Igazából itt is triggert látom a legjobbnak. Csak akkor annyiban módosul a fenti script, hogy a 2. sorban, a tábla neve a másik táblára mutasson és a belső update-nél is az ON-nál érdemes figyelni a kötésre. Az Inserted-et úgy képzeld el, mint egy átmeneti tábla, amiben a 2. sorban hivatkozott tábla adott rekordja van (, amire elsül a trigger). Ilyenkor a legfrissebb adatokat tartalmazza. Ennek párja a "deleted", ami a frissítés előtti állapotot tárolja. Akadnak helyzetek, amikor vagy ez vagy az kell. De többnyire inkább a friss kell. Ha nem jegyzed meg, akkor általánosságban inkább használd az Inserted átmeneti táblát.
Szóval úgy érzem triggereket fogsz gyártani
(Max jönnek az okosabbak és mutatnak jobb megoldást. Munka után, agymosottan ezt tudtam segíteni.)
Extra javaslat: Ha 4-5 lépés van a folyamatban, akkor érdemes eltárolni az időpontot és a felhasználót. Ha több, akkor lehet egy táblát csinálnék, hogy tároljuk el a lépést, időpontot és a nevet. Később jól jöhet.
[ Szerkesztve ]
Mess with the best / Die like the rest
-
bambano
titán
válasz
shipfolt #5957 üzenetére
Nem kell másik tábla, a táblába beleraksz egy mezőt, amibe beleírod annak a feladatnak az azonosítóját, aminek be kell fejeződnie ez előtt a feladat előtt.
Gyakorlatilag egy fa gráfot kell tárolni a szülőre mutató azonosítóval.
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
shipfolt
kezdő
Hatha megse halott a lista es van egy alvo adatbazis guru a kornyeken...
Hogyan lehet relacios adatbazisban "esemeny-lancokat" letrehozni?
Van pl. egy egyszeru "feladat" tabla, (ID, Megnevezes, Leiras, Hatarido) egy ideje szepen tudom kezelni SQL-bol, konnyu letrehozni, modositani es torolni a kulonbozo tennivalokat.
DE hogyan lehet olyan feladatot letrehozni, ami csak egy masik feladat befejezese utan lesz megoldhato?
Biztosra veszem, hogy kell egy masik tabla, amiben jelezni kell, hogy melyik legyen az elso, es melyik a kovetkezo.
DE mindket rekord ugyanabban a "feladat" tablaban van, es akarhany konyvet, leirast neztem vegig, ilyen peldat sehol se lattam.
-
Panhard
tag
Sziasztok! Csak érdekesség képpen írom, már megoldódott a probléma: Egy laptopon fut a xampp webszerver és adatbázis. Egyik napról a másikra nem volt hozzáférésem az adatbázishoz. phpmyadminal sem, és HeidiSQL-el sem tudtam bejelentkezni root felhasználóval sem. A my.ini-be beírtam a "skip-grant-tables" paramétert, így már le tudtam menteni az adatbázist, de csak az xampp újratelepítés után lett újra használható. Ismeri valaki ezt a problémát? Van rá valami orvosság?
-
Louro
őstag
Sziasztok!
T-SQL, SQL Server 2016
Tegnap óta rágódok egy feladaton, hogy miképp lenne a leghatékonyabb megcsinálni. Lehet megmosolyogtató, de vannak buktató.
A végcél:A nehézséget az okozza - , hogy elsősorban, hogy fafejű főnökök vannak, így kötött a forma -, hogy az oszlopnevek dátumok. Ezzel nem is lenne igazából bajom.
A. verzió:
Agyaltam rajta, hogy ennek a transzponáltját csináljam-e meg. Mondhatni egy SELECT és sok-sok aggregált függvénnyel könnyen előállnak az adatok egy lépésben. De van a riportban 3 sor, amiben ragaszkodnak a % jelhez. Ha ezt az aggregáltba beteszem, akkor az unpivot során, amikor a végleges formára hoznám, nem tudja feldolgozni, mert eltérő az adattípus.
A/1. verzió: amikor az aggregált számokat előállítom, mindent szöveggé alakítom és tudok unpivot-tal élni.
A/2. verzió: A speciális jelet kihagyom, majd a végleges nézetre hozáskor soronként végigiterálva megkeresem azt a 3 sort és betoldom a százalékjellel.B. verzió:
Ettől tartok, hogy überciki, de aztán lehet mégsem. Létrehozom a végleges formához a táblát. Mindig létrehozok egy új oszlopot a kívánt névvel és annyi update-et írok, amennyi sorom van. Így a speciális karakterek is könnyen kezelhetőek és módosítás/bővítés is talán átláthatóbb.Utálom a túlbonyolított, átláthatatlan kódokat. Ha kell, áldozok a performancia oltárán, mert nem több száz milliós táblákkal kell dolgozni szerencsére.
Bevallom az A/1. verzió most ugrott be, mikor elkezdtem írni. Ez tűnne a legideálisabbnak, mert az aggregált függvényekben ott lesz az üzleti logika ( SUM(CASE WHEN...)) ).
Esetleg valakinek valami javaslata?
Mess with the best / Die like the rest
-
nyunyu
félisten
Erre nem lenne célszerűbb írni egy before insert (Oracle) vagy instead of triggert (MS SQL) * ami azt csinálja, hogy ha már van fej_id, tetel_id, ar, kedv értékekkel sorod, akkor annak mennyiségét, értékét megnöveli az újonnan beszúrandó mennyiséggel, mennyiség*árral?
Ha meg nincs, akkor beszúrja az új sort?Mondjuk a táblákra aggatott triggerek nem szokták növelni a DB logika átláthatóságát
*: pontos szintaxisuk nekem sincs meg fejben.
[ Szerkesztve ]
Hello IT! Have you tried turning it off and on again?
-
pch
senior tag
Üdv!
Van egy tábla benne tételek.
Legyen rendelés a neve ( tetel_id, fej_id, menny, ar, kedv)
Szeretném őket groupolni és az összesítő szerint updatelni.
Azaz:
SELECT tetel_id, fej_jd, sum(menny), ar, kedv FROM rendeles WHERE fej_id=? GROUP BY tetel_id, ar, kedv
Ez a lekérdezés ugye pont ezt csinálja, hogyha azonos az ár és a kedvezmény összevonja a cikkeket.
Hogy tudom megcsinálni, hogy ennek a lekérdezés eredményét visszarakja a rendeles táblába, felülírva azt.
Gondoltam temp táblára, majd abba insert a fenti select majd delete a fej_id szerint majd megint instert és törölni a temp-ből utána.
De ez legalább 3 lekérés.
Van-e ennél jobb módszer?Köszi
http://sb-soft.hu - "A" számlázó
-
Petya25
őstag
Az a bajom, hogy ez egy eleve hiányosan érkező lista, és csak az érték nélküli mezőkbe kellene generálnom egyedi tartalmat. Ez a mező sajnos a fogadó táblában kulcs mező, üresen nem mehet be.
Esetleg szét tudom választani a listát töltött nem töltött ágra és az üres ágra identity-t tenni a betöltés előtt. Köszi.Antonio Coimbra de la Coronilla y Azevedo, bizony!
-
Louro
őstag
válasz
Petya25 #5942 üzenetére
Én eleve úgy szoktam mezőt létrehozni, hogy
create table [táblanév](
id bigint identity(1,1)
)Bár utólag is megoldható:
alter table [táblanév]
add id bigint identity(1,1)Ekkor 1-essel kezd és mindig eggyel növeli a mező értékét. Ha keletkezik egy új rekord, akkor megkapja a következő futószámot.
Remélem ez jó. A randommal az a bajom, hogy fontos-e az egyediség. Ha igen, akkor azt figyelni, hogy ki lett-e osztva az adott sorszám....De, ha nagyon beteg azonosító is jó, akkor:
alter table [táblanév]
add id varchar(1000)update [táblanév]
set id = newid()Ez elég random. A rand() függvénnyel meg generáltatsz egy véletlenszámot és azt írja be a mezőbe. Nem rekordonként generál egy számot. Ezért kaptad mindenhol ugyanazt.
[ Szerkesztve ]
Mess with the best / Die like the rest
-
Petya25
őstag
MS SQL-ben egyedi kulcsot generálnék egy mezőbe, de így minden mezőbe ugyanaz kerül
Valami tipp?update tábla set mező = RAND()
Antonio Coimbra de la Coronilla y Azevedo, bizony!
-
Louro
őstag
-
nevemfel
senior tag
válasz
Taoharcos #5937 üzenetére
Nem vagyok benne teljesen biztos, hogy saját user tábláról van szó, vagy a mysql saját user táblájáról.
SHA1-ből nem tudsz csinálni SHA256-t, sőt általánosságban hashből nem nagyon tudsz csinálni egy másik hasht, ugyanis hash gyártáshoz szükség van a kiinduló plaintext szövegre.
Azt lehet csinálni, hogy belépéskor, ha stimmel a jelszó, azaz egyezik a régi hash-sel, akkor le lehet gyártani az újat, a régit meg lehet törölni.
Rally against apathy draws small crowd
-
Taoharcos
aktív tag
Sziasztok!
Mysql adatbázisról kérdeznék. A mysql user jelszava alapártelmezetten SHA1-el van titkosítva. Valaki állította már át SHA256-ra? -
Petya25
őstag
Valakinek lenne ötlete, hogy egy régi Visual Studio Toolbox-ait, hogy lehetne bekapcsolni egy újabb verzióban?
Nem gondolnám, hogy az új nem kezeli a régieket, ezekkel olvastam be fájlokat illetve exportáltam kifele tartalmat.
Hiányzik a Control flow és a Data flow amit használnék az adat be-ki töltésekhez.
köszönömAntonio Coimbra de la Coronilla y Azevedo, bizony!
-
lanszelot
addikt
Hello,
Semmit se tudok az sql-ről.
Több kérdésem lenne:
Nekem php-hez kellene.
Gépemen van php, apache.
Sqlite-ot ajánlották, de semmit se találok hozzá. (Video tutorial)
Amit találok mindegyik terminalban turkálnak.
Azt írták nem kell terminálba turkálni, php alapból tudja, ha ini -ben beállítom.
Így azt se tudom hogy telepítsem.
Hogy induljak el.Ezért mysql-t raktam fel. De ezzel se tudom mit kell csinálni, hogy php-val használjam. Ezzel se találtam semmi tutorial-t php hoz . Csak ilyen nagyon alap dolgok.
Amit szeretnék: páromnak weboldal ahova beírja a receptjeit.
Gombbal hozzá adja egyesével a hozzávalókat.
Tehát lenne a database receptek, tables pl kokusz kocka, és ebbe kellene bele a hozzávalók, és az elkészítés, hozzávalókba kell a tészta, krém, öntet, díszítés. És ezekbe a vaj, tojas, tej stb.
Ezt meg lehet így csinálni? Mert sehol se találtam több mélységer.
Igazából semmit se találok amire nekem szükségem lenne.Nagyon alap tutorialokat végig néztem többet is. Hogy készítek, törlök, módosítok. Illetve ezt [link] végig olvastam. De ezekből nekem nem jött le, hogyan tudnám megoldani ami nekem kell.
-
nyunyu
félisten
Szerkesztési idő lejárt.
Ha az ügyfélnek két azonos időbélyegű előfizetése van, akkor a row_number() -es megoldás véletlenszerűen vagy az egyiket vagy a másik státuszát fogja visszaadni, így csak 1 sor fog hozzá tartozni.
Míg a másik két opció mindkét legfrissebb előfizetés státuszát visszaadja, azokkal egy ügyfélhez 2 sort fogsz kapni.(Ha a row_number()-t rank()-ra cseréled, akkor az is mindkettőt vissza fogja adni.)
Hello IT! Have you tried turning it off and on again?
-
nyunyu
félisten
Mármint sokkal egyszerűbb, mint ügyfelenként meghatározni az utolsó előfizetési dátumot, és az ahhoz tartozó rekordot visszakeresni az előfizetés táblában, hogy utána joinolhassam az előfizetőhöz:
select u.*, s.status
from users u
left join (
select *
from subscription
where (customer_id, createdate) in (
select customer_id, max(createdate)
from subscription
group by customer_id) s
on s.customer_id = u.customer_id;(Tényleg, Oraclen kívül van más olyan DB is, ami támogatja a sokoszlopos IN / NOT IN műveleteket?
Ha jól rémlik, ez a szintaxis nincs szabványosítva)Valószínűleg ablakozós max() függvénnyel is lehetne írni, és akkor nem kellene a group by köré írt külső query:
select u.*, s.status
from users u
left join (
select *
from subscription
where createdate = max(createdate) over (partition by customer_id)
) s
on s.customer_id = u.customer_id;Talán így a legrövidebb a kód.
[ Szerkesztve ]
Hello IT! Have you tried turning it off and on again?
-
nyunyu
félisten
select u.*, s.status
from users u
left join (
select x.*,
row_number() over (partition by customer_id order by created desc) rn
from subscription x
) s
on s.customer_id = u.customer_id
and s.rn = 1;Beszámozod a subscription táblát ügyfelenkénti létrehozási dátum szerint csökkenőbe, aztán ebből joinolod az első rekordot az usershez.
(Nem szeretek alquerykben group by-jal bohóckodni, mert úgy sokkal hosszabb+bonyolultabb+olvashatatlanabb lenne a kód.)
[ Szerkesztve ]
Hello IT! Have you tried turning it off and on again?
-
cattus
addikt
Hali,
Az alábbi problémával szembesültem amit egyelőre nem sikerült megoldani. Postgres alatt adott két tábla, Users (id, customer_id) és Subscriptions (customer, status, created). Egy userhez nulla vagy több subscription is tartozhat (customer - customer_id kapcsolat). Az lenne a célom, hogy minden userhez lekérjem a legfrissebb subscription statuszát (created alapján, ha nincs, akkor null). Mi lenne erre a legegyszerűbb megoldás?
Do the thing!
-
nyunyu
félisten
Alaposan le volt tesztelve a query, csak arra nem számítottam, hogy a tesztek után 2 héttel élesítéskor lesznek olyan igénylések, amik a különböző rendszereink közötti útvesztőben ideiglenesen hibás állapotban lesznek.
Tesztek idején még nem is léteztek!!!Hello IT! Have you tried turning it off and on again?
-
nyunyu
félisten
válasz
bambano #5924 üzenetére
Az a bajom, hogy túlzottan alulnézetből látom az adatokat, és nem mindig ismer(het)em a keletkezésük, elromlásuk pontos körülményeit a különböző rendszerek közti adatszinkronizációk útvesztőjében, viszont nekem kéne helyrekalapálni a félreálló biteket.
Bár elnézve azt,hogy ~3500 GDPR érett igénylést akartam javítani, de belekerült 10 friss is a szórásba, az csak 0.3% hibaarány, bőven elviselhető kerekítési hiba
Hello IT! Have you tried turning it off and on again?
-
nyunyu
félisten
Ehh,
and t.torlesi_datum is not null
helyettand t.torlesi_datum > h.letrehozasi_datum
kellett volna, és akkor biztosan nem nyírom ki a rossz ideiglenes számlaszámon létrejött friss igényléseket.
(Véglegeset 1 munkanappal később kaptak volna a számlavezető rendszertől, ami biztosan különböző lett volna a korábbiaktól.)Asszem felírhatom a kéménybe korommal, hogy ez az n+1-edik módszer, ahogy a rendszerünk képes elkefélni az adatokat.
[ Szerkesztve ]
Hello IT! Have you tried turning it off and on again?
-
nyunyu
félisten
válasz
bambano #5921 üzenetére
De kéne.
Eredeti DBben nem ugyanúgy hívják a hiteligenylesek meg a másik rendszerből származó táblákban a számlaszámos mezőket, így nem akadt fenn azon az Oracle, hogy elfelejtettem táblaaliast írni a select oszlopai elé, mivel egyértelmű volt, hogy melyik táblából jön.
Csak itt a szemléltetés kedvéért olvashatóbbá egyszerűsítettem a kódot, és nem követtetem a DBnk örökölt hülyeségeit, hogy minden táblában másképp hívják ugyanazokat a mezőket, aszerint, hogy ki mikor/hogyan specifikálta.
Pl. createdate vs create_date még az egyszerűbbik eset...
[ Szerkesztve ]
Hello IT! Have you tried turning it off and on again?
-
nyunyu
félisten
Adott egy ilyen query
update hiteligenylesek
set torolt = 1
where (foszamla, alszamla) in
(select foszamla, alszamla
from hiteligenylesek h
left join torolt_igenylesek t
on t.foszamla = h.foszamla
and t.alszamla = h.alszamla
left join aktiv_igenylesek a
on a.foszamla = h.foszamla
and a.alszamla = h.alszamla
where h.torolt = 0
and t.torlesi_datum is not null
and a.foszamla is null);
Hiteligenylesek táblában vannak a hitelek adatai, torolt_igenylesek és aktiv_igénylesek táblákba be lett importálva a számlavezető rendszer már törölt és aktív állománya január végéig. (torlesi_datum <= január 31)Ehhez képest az Oracle valahogy teret váltott, és a február 29-én létrejött igényléseket is töröltre állította, pedig az azonosítóik sem a torolt_igenylesek, sem az aktiv_igenylesek táblában nem szerepelnek
(torolt flagjük meg nyilvánvalóan 0, hiszen a query futtatása előtti napokban jöttek létre.)Még mindig nem értem, a nincs találat hogyan felel meg az is not null feltételnek.
[ Szerkesztve ]
Hello IT! Have you tried turning it off and on again?
-
Most hogy mondod..
Lehet hogy itt lesz a kutya elásva, vagy valahol itt. Ugyanis vagy 2 hete befrissítettem az MS SQL Enterp. Managert és kiakadt az excel importálásakor (itt visszafele volt a művelet) valamilyen "Microsoft.ACE.OLEDB.16.0 szolgáltató nincs bejegyezve a helyi gépen" hibaüzenettel visszadobta az importálást. Akkor valahogy - már nem emlékszem pontosan - 'bebikáztam' egy kiegészítő driver telepítéssel, de nem teljesen tiszta a dolog, olyan értelmezésben hogy nem volt időm bogarászni mi is a megoldás pontosan és mit csinál, melóban pörgés van ugye, örülsz ha tudsz tovább haladni. (Az importálás excelből MS SQL-be megoldódott és az elmúlt vagy 15 évben - azóta csinálom ezt - nem volt ilyesmire példa, hogy az SQL-ből az EXcelbe nem viszi át az összes rekordot - avagy nem futottam bele ilyesmibe!!!!!)Korábban nem volt ilyen probléma, a copy with headers átvitte az összes eredmény sort.
[ Szerkesztve ]
-
nyunyu
félisten
Nem lehet, hogy az Excel ODBC drivere kavar be?
Nálam Oracle SQL Developerrel is az a helyzet, hogy ha jobb klikk, save as-szel rákattintok az eredményhalmazra, és excel van kiválasztva, akkor egyszerűen megáll, amint eléri a fájlméret a 3MB-t.
Múltkor 3-4 napig vertem szemmel egy 17 ezer soros excelt, mire rájöttem, hogy igazából 25 ezer sort kellett volna átnéznem
Azóta csak csv-be mentek.
Hello IT! Have you tried turning it off and on again?
-
Sziasztok!
Van egy jelenség ami előtt értetlenül állok. Nem tisztán SQL kérdés, de a forrás onnan származik.
MS SQL Management studio-ban futtatok egy sima select query-t.
Lejön az eredmény, az eredmény ablakban ahol a rekordok vannak bal felső sarokra rákattintok - kijelölődik az egész táblázat.
Majd jobb egér gomb katt-ra elöjövő menüből a - Copy with Headers-re kattintok.
Nyitok egy új üres excel táblázatot és bemásolnám de nem viszi át az összes sort!
Pl az eredmény rekordok száma 1245 a 'Paste' után az excel munkalapon meg 968 sor van.
Ez hogy lehet? Min megy félre a beillesztés?HA mondjuk Save results As.. ra kattintok és .csv-ben exportálom az eredményt akkor átmegy minden rekord, csak ilyenkor a fejléc marad le.
Dolgozom excellel, makrózok is benne stb. Észrevettem már hogy ha A oszlopban nincs érték akkor bizonyos műveleteknél hajlamos figyelmen kívül hagyni azt az egész sort, hiába van adat mondjuk B oszloptól. De most ez sem áll fenn, minden A oszlopban van értelmes adat.
[ Szerkesztve ]
-
nyunyu
félisten
Ha valami(ke)t aggregálni szeretnél, akkor a group by-nál fel kell sorolnod minden olyan mezőt, ami a selectnél fel van sorolva és NEM számított mező.
Aggregálandó mezőket viszont nem szabad beírni a group by-hoz.Persze lehetne ablakozó függvényekkel bonyolítani a történetet, hogy ne kelljen group by, de úgy kétszer olyan hosszú lenne a kód, és nehezebb megérteni, mit csinál
select id, kezdes
from (
select id, kezdes, row_number() over (partition by id order by kezdes asc) rn
from tabla)
where rn = 1;[ Szerkesztve ]
Hello IT! Have you tried turning it off and on again?
-
Lokids
addikt
Nem. De rájöttem, mit rontottam el.
Amikor alapból felveszem a mezőt akkor reklamál, hogy tegyem be valami agrregálásba vagy groupba is. A MIN ezt megoldja. De ha benn hagyom akkor továbbra is 2 sorban jeleníti meg.
Szóval jó volt elsőre is, csak ki kellett volna törölnöm a Group by-ból a mezőt.If you chase two rabbits you will lose them both.
-
coco2
őstag
válasz
bambano #5897 üzenetére
Ha 60 nappal előre mindig meg kell adni, mi lesz munkanap, és mi nem, amin utólag nem változtathatnak, és határidőt soha sem kell 60 napra előre számolni, akkor létezik logikus megoldás. Hanem azt korábban nem írtad, és nekem nincsen ismeretem a kérdéses környezet ügyintézésében. Mint ahogy abban sem, létezik-e 60 napon túli határidő? Ha igen, megint csak baj van.
កុំភ្លេចប្រើភាសាអង់គ្លេសក្នុងបរិយាកាសអន្តរជាតិ។
-
Lokids
addikt
Sziasztok!
Hogyan tudom megcsinálni azt, hogy 1 sorban jelenjen meg az alábbi a korábbi dátummal.
ID Kezdés
1 2020.01.01
1 2020.02.01Akkor csak ez jelenjen meg:
1 2020.01.01If you chase two rabbits you will lose them both.
-
Tothg86
tag
Sziasztok!
Egy kis segítséget szeretnék kérni. Nemrég kezdtem Hibernate-el dolgozni, és kissé elakadtam, szeretnék egy kis segítséget.
Van egy munkahelyi tábla, amiben nincsen auto increment ID, nincs semmilyen primary key sem. Szembesültem azzal (ha jól értem), hogy a hibernate megköveteli az egyértelmű azonosítást. Mivel nincs a táblában ID, ezért egy darab azonosítót nem tudok hozzárendelni. Olvastam, hogy van lehetőség összetett kulcs hozzárendélésére az EmbeddedID annotation-nel.
Jól értem? Egy netes példában az volt, hogy egy külön osztályt hozok létre a kulcsnak, és itt jelölöm, hogy @Embeddable. De ez már beleszámít a mappingbe?
Köszi, ha tudtok segíteni ebben -
bambano
titán
egyébként a PostgreSQL úgy alakult ki anno, hogy az Ingresből fejlesztették tovább, Postgres néven. Amikor a korábbi lekérdező nyelvét lecserélték szabvány sql-re, akkor átnevezték a projektet Postgresql-re és maradt a rövid neve postgres.
A Postgre az nem hivatalos neve.
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
-
bambano
titán
én is megcsináltam, még éjjel
with naptar as (
select napok,
(case when date_part('dow',napok) between 1 and 5 then 1 else 0 end)::integer
*
(case when calendar.date is null then 1 else 0 end)::integer as isworkday
from
generate_series(now()::date,now()::date+'60 days'::interval,'1 day'::interval) as napok
left outer join
calendar on napok=calendar.date)
select napok::date,-1+sum(isworkday) over (order by napok) as workdays
from naptar where isworkday=1;kb. ennyi az alap, ebből lehet közvetlen lekérdezést csinálni vagy window funkcióval és rownumberrel, vagy én csináltam belőle egy view-t és abból közvetlenül lehet selectelni.
egy rakás lehetséges optimalizáció még van benne, például a két case helyett lehetne egyet, stb.
Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis
Új hozzászólás Aktív témák
- Kerékpárosok, bringások ide!
- Futás, futópályák
- Nvidia GPU-k jövője - amit tudni vélünk
- A tokok után a bele való
- CURVE - "All your cards in one." Minden bankkártyád egyben.
- Súlyos hibát javít az iOS 18.3.1
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- EA Sports WRC '23
- BMW topik
- 3D nyomtatás
- További aktív témák...
Állásajánlatok
Cég: Marketing Budget
Város: Budapest