Portál AbcLinuxu, 26. dubna 2024 04:26


Dotaz: Vložení hodnot do SQL tabulky

31.3.2021 20:32 jan.rok | skóre: 21
Vložení hodnot do SQL tabulky
Přečteno: 2976×
Odpovědět | Admin
Ahoj,

nevím si rady s tím, jak vložit chybějící hodnoty do tabulky - třeba takovéto:
jmeno | banka | vklad
---------------------
jan      KB      100
jan      CSOB    200
jan      CS      100
tonda    CSOB    100
tonda    CS      100
pepa     KB      300
jiri     KB      200
jiri     CSOB    100

Chtěl bych docílit toho, aby každý člověk měl v ČS uloženo 100 Kč.

Umím vypsat, kteří lidé nemají u ČS nic:

select distinct jmeno from moje_tabulka where jmeno not in (select jmeno from moje_tabulka where banka <> 'CS')

Výsledkem by měl být
 pepa, jiri
Ale už nevím, jak toto použít pro INSERT.

Finální tabulka by měla vypadat takto:
jmeno | banka | vklad
---------------------
jan      KB      100
jan      CSOB    200
jan      CS      100
tonda    CSOB    100
tonda    CS      100
pepa     KB      300
pepa     CS      100
jiri     KB      200
jiri     CSOB    100
jiri     CS      100

Děkuji za rady. JR

Řešení dotazu:


Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

31.3.2021 20:42 X
Rozbalit Rozbalit vše Re: Vložení hodnot do SQL tabulky
Odpovědět | | Sbalit | Link | Blokovat | Admin
Domaci ukol?
31.3.2021 20:50 jan.rok | skóre: 21
Rozbalit Rozbalit vše Re: Vložení hodnot do SQL tabulky
Kéž by.

Oprava databáze logů v Informixu - v principu jde o to, co jsem pro jednoduchost popsal jako uživatel-banka-vklad.

31.3.2021 21:19 Peter Golis | skóre: 64 | blog: Bežné záležitosti | Bratislava
Rozbalit Rozbalit vše Re: Vložení hodnot do SQL tabulky
Taknsi z toho selektu vygenerujeme príkazy pre insert, a tie spustíme. Hoci aj cez awk, a pôjdeme spať.
31.3.2021 21:42 EtDirloth | skóre: 11
Rozbalit Rozbalit vše Re: Vložení hodnot do SQL tabulky
Odpovědět | | Sbalit | Link | Blokovat | Admin
ten tvoj select distinct... by mal podla mna mat banka = 'CS' v subselecte

ak mas otestovany select, potom staci pouzit insert-select syntax:
INSERT INTO moje_tabulka (jmeno, banka, vklad)
   SELECT DISTINCT jmeno, 'CS', 100
      FROM moje_tabulka
      WHERE jmeno NOT IN (SELECT jmeno FROM moje_tabulka WHERE banka = 'CS')
;
Řešení 1× (Filip Jirsák)
xkucf03 avatar 31.3.2021 21:51 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Vložení hodnot do SQL tabulky – INSERT INTO … SELECT …
Odpovědět | | Sbalit | Link | Blokovat | Admin
Příloha:

Odhlédnu od toho, že to schéma je špatně navržené, a budu to brát jako minimalistický příklad pro potřeby dotazu.

Soubor vklady.sql:

CREATE TABLE vklad (
	jmeno VARCHAR(20),
	banka VARCHAR(10),
	vklad INTEGER
);

INSERT INTO vklad (jmeno, banka, vklad) VALUES ('jan',   'KB',   100);
INSERT INTO vklad (jmeno, banka, vklad) VALUES ('jan',   'CSOB', 200);
INSERT INTO vklad (jmeno, banka, vklad) VALUES ('jan',   'CS',   100);
INSERT INTO vklad (jmeno, banka, vklad) VALUES ('tonda', 'CSOB', 100);
INSERT INTO vklad (jmeno, banka, vklad) VALUES ('tonda', 'CS',   100);
INSERT INTO vklad (jmeno, banka, vklad) VALUES ('pepa',  'KB',   300);
INSERT INTO vklad (jmeno, banka, vklad) VALUES ('jiri',  'KB',   200);
INSERT INTO vklad (jmeno, banka, vklad) VALUES ('jiri',  'CSOB', 100);

INSERT INTO vklad (jmeno, banka, vklad)
SELECT
	jmeno,
	'CS' AS banka,
	100 AS vklad
FROM (
	SELECT
		jmeno
	FROM vklad 
	EXCEPT
	SELECT
		jmeno
	FROM vklad
	WHERE banka = 'CS'
);

Výsledek:

$ cat vklady.sql | relpipe-in-sql --relation vklad "SELECT * FROM vklad" | relpipe-out-tabular 
vklad:
 ╭────────────────┬────────────────┬─────────────────╮
 │ jmeno (string) │ banka (string) │ vklad (integer) │
 ├────────────────┼────────────────┼─────────────────┤
 │ jan            │ KB             │             100 │
 │ jan            │ CSOB           │             200 │
 │ jan            │ CS             │             100 │
 │ tonda          │ CSOB           │             100 │
 │ tonda          │ CS             │             100 │
 │ pepa           │ KB             │             300 │
 │ jiri           │ KB             │             200 │
 │ jiri           │ CSOB           │             100 │
 │ jiri           │ CS             │             100 │
 │ pepa           │ CS             │             100 │
 ╰────────────────┴────────────────┴─────────────────╯
Record count: 10
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
31.3.2021 22:16 jan.rok | skóre: 21
Rozbalit Rozbalit vše Re: Vložení hodnot do SQL tabulky – INSERT INTO … SELECT …
Děkuju moc všem. Když to takhle vidím před sebou, je to vlastně jednoduché. Pokud to někdo umí... Dík za poučení.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.