Hirdetés
- --HARDCORE--: Hogyan adjuk meg a Foxpost címünket hatékonyan?
- Torda: Így lehet fillérekből prémium okosotthon rendszert építeni 2025-ben
- Brogyi: CTEK akkumulátor töltő és másolatai
- Magga: PLEX: multimédia az egész lakásban
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- Toomy: FOXPOST: régen jó volt, de már jobban jársz, ha elfelejted
- sziku69: Szólánc.
- droidic: Saját hálózat, saját szabályok – Építs profi infrastruktúrát!
- D1Rect: Nagy "hülyétkapokazapróktól" topik
Új hozzászólás Aktív témák
-
Magnat
veterán
válasz
shipfolt
#6014
üzenetére
Pl valamilyen sql-t, de ezt mondjuk a topik címe determinálja
Nem tudom mennyi bejegyzés van, de pár millió rekordot jó szervezés meg kulcsolás esetén kb bármilyen vason meg lehet oldani bármilyen sql szerverrel .. meg persze kell hozzá vmi frontend, jellemzően browseres megoldás a legelterjedtebb (ekkor persze kell webszerver, de az is van ingyé), de még excelben is meg lehet csinálni (ami a háttérben beszélget az sql szerverrel).Lehet pl MariaDB (azaz MySql), Transact (MS) Sql-nek is van ingyenes verziója olyan limitációkkal amit jó eséllyel nem fogtok elérni, meg még jó hosszan lehetne sorolni.
-
-
Magnat
veterán
válasz
kw3v865
#5975
üzenetére
Szia,
nem ismerem a PostgreSQL-t, de igent tippelnék, sőt, mivel az insert elvileg row exclusive lockol (tehát nem a teljes táblát) az is lehet, h a rekordok fele már be lesz szúrva amikor a fv lefut, a többi meg még nem ...
BEGIN;
TRUNCATE TABLE tábla;
LOCK TABLE tábla IN EXCLUSIVE MODE;
INSERT INTO tábla SELECT * FROM másik_tábla WHERE feltétel;
COMMIT;Én vhogy így csinálnám, nyilván ha a fv éppen akkor fut rá amikor ez történik, akkor egy picit várni fog. (Már ha fontos, h üres táblára vagy az insert közepén ne fusson le)
Illetve a truncate elvileg gyorsabb mint a delete, szóval amiatt is így használnám.
-
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. -
Magnat
veterán
Üdv,
Mysql-ben van egy kis függvényem, ami egy adott mezőre (eladas_sum_brutto) végez műveleteket (lényegtelen, h mit) és ebből ad vissza egy értéket. (Bemenő paraméter az eladás id.)
Viszont jó lenne univerzálisra megcsinálni a függvényt úgy, h ne csak erre a mezőre lehessen meghívni hanem pl az eladas_sum_netto-ra is. Így azt találtam ki, h csinálok egy általános függvényt, aminek a második paramétere a mezőnév, amire az adott műveletet el kell végezni és egy változóba összerakva a lekérdezést dinamikus sql-lel futtatnám meg a PREPARE, EXECUTE, DEALLOCATE trió segítségével, csakhogy mint kiderült, a mysql nem támogatja a dinamikus sql-t tárolt eljárásban/függvényben, illetve triggerben.Van valakinek 5lete esetleg, hogyan tudnék egy sztringet (amiben a select össze van rakva a paraméterként kapott mezőnévvel) sql parancsként futtatni tárolt függvényben vagy muszáj lesz minden érintett mezőre külön megcsinálni a függvényt (vagy egy függvényben case-szel külön selecteket futattni attól függően, h mi a mezőnév paraméter)?
-
Magnat
veterán
válasz
martonx
#5513
üzenetére
Selectnél működik:
SET @row_number = 1;
SELECT
(@row_number:=@row_number + 1) AS num,`cust_partnerkod`
FROM cikktorzs_customer WHERE `cust_partnerkod`= 200000De update-nál nem, ugyanarra az értékre updateli az összes érintett sort:
SET @row_number = 1
UPDATE cikktorzs_customer c_c, (SELECT (@row_number:=@row_number + 1) AS num, cust_partnerkod AS i_c_p FROM cikktorzs_customer LIMIT 1 ) i_c_c SET `cust_partnerkod` = cust_partnerkod + @row_number WHERE cust_partnerkod = 200000 -
Magnat
veterán
"Sok fejfájástól megment, ha több tábla joinja alapján kell updatelni egy táblát..." - de ez egy tábla ...
"Egyébként már az updateedet sem értem, miért kéne többször lefutnia az alselectnek, ha egyre limitáltad a visszaadható eredmény számát?" - azért, mert egy rekordhoz egyszer kell lefusson, de az első update után változik az adatnézet, ha akkor újra kiértékelődik a belső select, akkor már az eggyel növelt értékű rekordot kellene (mármint a logikám szerint) megtalálnia.
-
Magnat
veterán
Üdv,
adott egy tábla (cikktorzs_customer) amiben a cust_partnerkod hibás kód miatt több ezer rekord esetében azonos értéket vett fel (200000). Akarnék egy updatet az érintett rekordokra ami annyit csinál, h kiolvassa a mindig aktuálisan legnagyobb partnerkódot és ahhoz egyet hozzáad.
UPDATE cikktorzs_customer c_c, (SELECT cust_partnerkod AS i_c_p FROM cikktorzs_customer ORDER BY cust_partnerkod DESC LIMIT 1) i_c_c
SET `cust_partnerkod` = i_c_p + 1
WHERE c_c.cust_partnerkod = 200000A gond ezzel annyi, h a belső select nem értékelődik ki újra minden alkalommal, így az összes rekord ami eddig 200000 volt, most 200001 lett. Ki tudja a megoldást?
Előre is köszi annak, aki
Új hozzászólás Aktív témák
- Home server / házi szerver építése
- AMD vs. INTEL vs. NVIDIA
- AMD Catalyst™ driverek topikja
- Google Pixel topik
- NBA és kosárlabda topic
- Rezsicsökkentés, spórolás (fűtés, szigetelés, stb.)
- Linux kezdőknek
- Battlefield 6
- Horgász topik
- Intel Dual Core 2000 felhasználók barátságos offolós topikja
- További aktív témák...
- 2 DB HYPERX 16GB FURY DDR4 2666MHz CL16 HX426C16FB/16
- Alaplap ASUS ROG STRIX B850-I GAMING WIFI, Fractal Design ház, NOCTUA NH-D9L chromax black hűtő, Cor
- Új, bontatlan / felbontott / Kingston, Corsair, G. Skill, Crucial / DDR5 ramok / gari!
- NVIDIA RTX 3080 Ti Founders Edition
- 15.gen! Intel Core Ultra 9 285K +16-32GB DDR5 RAM +hűtött VRM-es B860 lap! GAR/SZÁMLA (a Te nevedre)
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - Automata kézbesítés utalással is!
- Eladó egy Xiaomi 12T pro Töltővel adom
- ÁRGARANCIA!Épített KomPhone i5 14400F 32/64GB RAM RX 9060 XT 16GB GAMER PC termékbeszámítással
- VeryBig! Akciós! Dell Precision 7760 i7-11850H 32GB 512GB SSD RTX A5000 16GB 17" FHD 1 év garancia
- Eredeti Microsoft Windows 10 / 11 Pro OEM licenc Akciós áron! 64/32 bit Azonnali kézbesítéssel
Állásajánlatok
Cég: Laptopszaki Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest

