NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Jan Budai
Člen
Avatar
Jan Budai:8.10.2015 21:55

Ahoj,
řeším tento problém.
Mám dvě tabulky (table1, table2) v jedné DB.
Table2 je rozšířená table1 (ty samé sloupce o stejných názvech + další sloupce).
Potřebuji vložit data do table2 z table1 a na ty další sloupce dát hodnotu NULL.
Lze to provést nějakým jednoduchým příkazem? Sloupců v table1 je asi 150 a v table2 400.

Předem děkuji

 
Odpovědět
8.10.2015 21:55
Avatar
MrPabloz
Člen
Avatar
Odpovídá na Jan Budai
MrPabloz:8.10.2015 22:07
Insert into table2 (zde bude seznam sloupcu v table1)
Select (seznam_sloupcu) from table1

Seznam sloupcu získáš např tak že v SQL managment studiu potáhneš složku columns dane tabulky do editoru na místo, kde jsou sloupce + je potřeba mít nastavené nove sloupce v tabulka2 na NULL.

Nahoru Odpovědět
8.10.2015 22:07
Harmonie těla a duše, to je to, oč se snažím! :)
Avatar
Honza
Člen
Avatar
Honza:9.10.2015 10:29

Ahoj, půjdu na to trošku z jiné strany. Je opravdu nutné mít v databázi stejná data dvakrát? Dle mého názoru by bylo lepší řešení v t2 udělat jen sloupce které jsou oproti t1 navíc a do jednoho sloupce si uložit PK záznamu z t1 ke kterému daný řádek z t2 patří a pak si to jen najoinovat k sobě (vytvořit view).

Nahoru Odpovědět
9.10.2015 10:29
Snadnou cestou se daleko nedostanete, je tam velká tlačenice...
Avatar
shaman
Člen
Avatar
Odpovídá na Jan Budai
shaman:21.10.2015 15:09

Lze to provést nějakým jednoduchým příkazem?

Nie, neviem aky programovaci jazyk pouzivas ale budes si musiet napisat cyklus, ktory precita data z table1 a najde riadok v table2 kde ho updatne. V opacnom pripade ho insertne. Ak su v tabulke table2 defaultne hodnoty stlpcov nastavene ako NULL, tak nemusis nic vkladat do tych riadkov, SQL sam vlozi NULL hodnotu.

Nahoru Odpovědět
21.10.2015 15:09
try {...} catch (Exception ignored) { echo " ¯\_(ツ)_/¯ "; }
Avatar
MrPabloz
Člen
Avatar
Odpovídá na shaman
MrPabloz:21.10.2015 15:30

Pleteš se, samozřejmě že to jde. Jak jsem psal výše, v SQL je na to příkaz INSERT SELECT. Kde selectem si vybereš hodnoty z tabulky (i více) a poté to automaticky insertne do vybrané tabulky. Jde mu jen o kopii dat z tab1 do tab2, tudíž tohle je nejjednodušší a nejrychlejší způsob. Žádný cyklus(cursor) na to potřeba není ;)

Nahoru Odpovědět
21.10.2015 15:30
Harmonie těla a duše, to je to, oč se snažím! :)
Avatar
shaman
Člen
Avatar
Odpovídá na MrPabloz
shaman:21.10.2015 15:50

Asi mas pravdu

INSERT INTO destTable
SELECT Field1,Field2,Field3,...
FROM srcTable
WHERE NOT EXISTS(SELECT *
                 FROM destTable
                 WHERE (srcTable.Field1=destTable.Field1 and
                       SrcTable.Field2=DestTable.Field2...etc.)
                 )
Editováno 21.10.2015 15:53
Nahoru Odpovědět
21.10.2015 15:50
try {...} catch (Exception ignored) { echo " ¯\_(ツ)_/¯ "; }
Avatar
Jan Budai
Člen
Avatar
Jan Budai:27.10.2015 9:12

Děkuju za odpovědi :) Problém je vyřešen tím, že tabulky nespojuji (ne na můj požadavek).
:)

 
Nahoru Odpovědět
27.10.2015 9:12
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.