Hirdetés
- Luck Dragon: Asszociációs játék. :)
- sziku69: Szólánc.
- sziku69: Fűzzük össze a szavakat :)
- MasterDeeJay: ASRock B250M Pro4 coffeetime mod! (DDR4)
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- N€T0X|N: Talaria tuning: meg kéne tudni állni!
- Pengeélen
- MasterDeeJay: Egy nem átlagos Asus videókártya (GTX950M 2GB GDDR3)
- Meggyi001: Áram nélkül....méltóság nélkül.....
- hcl: Olympus E-PL1 nyomozás
Új hozzászólás Aktív témák
-
válasz
Iginotus
#3660
üzenetére
meh. egy frappáns tsql-es megoldás jutott eszembe erre, ott a newid-t checksumozva generáltunk egy random számot, amit a megfelelő méretűre faragtunk. de ez persze nem igazi random. oracle-ben a sys_guid() csinál hasonlót.
mondjuk én olyan állat vagyok, aki sqlben nem ír ciklust, mert tiltja a vallása. -
bpx
őstag
válasz
Iginotus
#3660
üzenetére
Az egy nem correlated subquery (magyarul még szebb: korrelált allekérdezés), ezért ami belül van, az egyszer lefut, és kívül mindenhova az ott kapott értéket használja. Lehet belőle correlated subquery-t csinálni valami értelmetlen feltétellel és akkor majd miden sorra újból kiértékelődik. Persze ez nem szép és kapásból odaírnám kommentbe, hogy ez miért van belegányolva. Vagy marad a ciklus, amit már első ránézésre is el lehet olvasni.
create table forge (row_id, code_neu) as select rownum, 0 from dual connect by level <= 10;
create table oe (orgeh_code) as select rownum from dual connect by level <= 4;
select * from forge;
ROW_ID CODE_NEU
---------- ----------
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 0
select * from oe;
ORGEH_CODE
----------
1
2
3
4
update forge set code_neu =
(
select orgeh_code from oe
----
where forge.row_id = forge.row_id
----
order by dbms_random.value fetch first 1 row only
)
where row_id between 1 and 9;
select * from forge;
ROW_ID CODE_NEU
---------- ----------
1 1
2 3
3 1
4 2
5 1
6 1
7 4
8 3
9 4
10 0 -
nyunyu
félisten
válasz
Iginotus
#3658
üzenetére
valami ilyesmi:
declare i number;
begin
for i in 1 .. 9 loop
update ...
where row_id=i
end loop;
end;Kevésbé procedurálisan gondolkozva persze meg lehet írni egy updatetel is, mivel van sorfolytonos IDd a táblán, amihez lehet row_number()-rel joinolni:
update sds.forge upd
set code_neu=
(select a.orgeh_code from
(select oe.*, row_number() rn from sds.oe
order by dbms_random.value) a
where a.rn=upd.row_id); -
Ispy
nagyúr
válasz
Iginotus
#2876
üzenetére
Milyen adatok ezek, hogy ilyen hosszúak? Nem lehetne a betöltés pillanatában ellenőrizni a keresési feltételeket? Vagy csinálni egy temp táblát, ahová eleve értelmezhető bontásban tárolnád az adatokat? És akkor arra lehetne keresni is.
A lényeg, hogy túl kevés az info a megoldáshoz.
-
bambano
titán
válasz
Iginotus
#2880
üzenetére
a másik ötlet, hogy két lépésben keresel, egyszer simán az adatokon, másodszor minden adatmező elejéről és végéről levágsz egy-egy stringet, ami olyan hosszú, mint a keresési string, ezeket megfelelően összekonkatenálod és ezen kerestetsz.
lehet, hogy erre akár egy nézettáblát is fel lehetne húzni.
-
bambano
titán
válasz
Iginotus
#2880
üzenetére
kérdés: ha olyan nagy mennyiségű adatot kell tárolnod, hogy úgyis eltöri az sql, akkor miért nem töröd a maximális mezőméret felére, és akkor tudnád konkatenálni a mezőket és simán ellenőrizni?
tehát pl. ha az ms sql 65536 bájtot tud tárolni egy mezőben (csak hasraütéssel, a példa kedvéért), és neked így kell 4 sor az adathoz, akkor miért nem veszed le a mezőméretet 32768-ra, akkor kellene 8 sor, viszont két egymás utáni sorban levő adatot egymás mellé tudnál rakni és akkor könnyen tudnál keresni.
Új hozzászólás Aktív témák
- Milyen TV-t vegyek?
- Kormányok / autós szimulátorok topikja
- Filmvilág
- Vezetékes FEJhallgatók
- Samsung Galaxy Felhasználók OFF topicja
- Nos igen, ilyen is lehet egy notebook…
- Samsung Galaxy A57 - kecses test, lusta lélek
- PlayStation 5
- Okos otthon - Home Assistant, openHAB és más nyílt rendszerek
- Horgász topik
- További aktív témák...
- GIGABYTE B650 EAGLE AX + bontatlan 32GB 6000MHz hűtőbordás DDR5 kit! GAR/SZÁMLA (a Te nevedre)!
- iPhone 16 Pro 128GB gyári független akku 91%
- ACER F5-771G 17" full HD i5 7200U 16GB DDR4 RAM 1TB SSD GTX 950M
- Dell G15 5511 i7-11800H RTX 3050Ti 16 GB RAM 15,6" Full HD 120Hz
- Lenovo Legion Pro 5 Új RTX 5070 / i9-14900HX / 32GB DDR5 / 1TB NVMe
- ÁRGARANCIA!Épített KomPhone i5 10400F 16/32/64GB RAM RX 7600 8GB GAMER PC termékbeszámítással
- Apple iPhone Air 512GB Bontatlan Független Összes Szín / 27% áfás ár
- HP Elitebook 850 G8 15,6" i5 1135 G7, 8-16GB RAM, SSD, jó akku, számla, 6 hó gar
- Samsung Galaxy S24 Ultra 256GB Titanium Black Megkímélt állapot 12GB RAM 6 hónap garancia
- Dell Precision 5560 i7 32GB RAM 512GB SSD NVIDIA RTX A2000 FHD+
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
![;]](http://cdn.rios.hu/dl/s/v1.gif)
