» »

SQL stavek?

SQL stavek?

xeon ::

Ne znam rešit en problem, če kdo lahko pomaga ali svetuje kje in kako lahko naredim ta sql stavek:

Imam tabelo z 1000 različnimi angleškimi imeni:
1.Alex
2.John
..
1000.Rachel

v tabelo bi pa rad vnesel 10 slovenskih imen (1.Janez, 2.Metka,... 10.Tadej), ki bi zamenjali vseh teh 1000 različnih angleških imen z 10 slovenskih, ampak tako, da jih naključno razporedi po vseh teh 1000 polj...

Niti z googlom si nisem znal pomagat do rešitve tega problema.. :(

keworkian ::

A to bi rad samo v SQL-u ali je še kakšen drug jezik zadaj?
Obscenities in B-Flat

Zgodovina sprememb…

xeon ::

Jap, samo SQL

keworkian ::

Malo si poglej kako v mysql LOOP statement deluje.
Obscenities in B-Flat

WarpedGone ::

1. LOOP ni SQL
2. MySQL je sorry excuse za SQL

Na Oraclu prideš čez z nečim takim:
UPDATE names N
   SET NAME = (SELECT Ime
                 FROM ((SELECT 'Janez' AS Ime FROM DUAL
                        UNION ALL
                        SELECT 'Micka' FROM DUAL
                        UNION ALL
                        ...
                        SELECT 'Korl' FROM DUAL
                       ) sub
                WHERE sub.ROWNUM = (RANDOM(1000) MOD 10)
              )
;
COMMIT;
Zbogom in hvala za vse ribe

Lion29 ::

warped kaj pomeni RANDOM(1000) MOD 10?

namrec on mora (kot sem jaz razumel) zamenjati celo bazo imen... in ne ene par nakljucnih.... torej VSEH 1000 z 10imi slovenskimi
Founder and CTO @ Article-Factory.ai

WarpedGone ::

hmm, kompliciram... ideja je da morš za vsak zapis v Names dobit neko random celo cifro od 1 do 10 (oz. kolker je pač slovenskih imen) in vzet zapis s to zaporedno cifro uiz subselecta za update.

Nimam pri rok dokumentacije kak je točn tip rezultata, zna bit decimalna cifra. Da se tut kako drugač načarat to cifro, ni nujen random.

Edit: WHERE je del subselecta, osnovni UPDATE je brez njega.
Zbogom in hvala za vse ribe

Zgodovina sprememb…

milc ::

Lahko tudi tako:
DECLARE
   CURSOR my_cursor
   IS
      SELECT        NAME
               FROM names
      FOR UPDATE OF NAME;
BEGIN
   FOR name_rec IN my_cursor
   LOOP
      UPDATE names
         SET NAME = (SELECT NAME
                       FROM (SELECT   NAME
                                 FROM slo_names
                             ORDER BY DBMS_RANDOM.VALUE)
                      WHERE ROWNUM = 1)
       WHERE CURRENT OF my_cursor;
   END LOOP;
END;


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

TSQL rekurzivno

Oddelek: Programiranje
11907 (646) hamez66
»

SQL vprasanje (strani: 1 2 )

Oddelek: Programiranje
688364 (5043) BivšiUser2
»

[SQL] - združitev glede na iste vrednosti

Oddelek: Programiranje
131396 (1038) tx-z
»

[PHP]Zajem podatkov iz baze

Oddelek: Programiranje
354038 (3675) cobrica
»

sql-t stored procedure

Oddelek: Programiranje
101058 (925) detroit

Več podobnih tem