Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno MS SQL dotaz

Ano, je to špatný návrh databáze.
Pokud máš tabulku, kde máš různé typy dat, pak potřebuješ další tabulku, kde bude seznam těch typů (o referenční integritě ani nemluvím).
Pokud budeš mít seznam typů, pak si jednoduše jedním dotazem vypíšeš, vše, co ti chybí v tabulce 2.
Použij LEFT OUTER JOIN

Jinak bys tu tabulku se seznamem musel v tomto dotazu (a ve všech dalších) uměle vytvářet.

select * 
	from (values ('ulica'), ('telefon'), ('email'), ('mobil')) pom (TypDat)

Pak by to mohlo vypadat nejak takto, chybejici typy si dopln.

SELECT tab1.rodne_cislo, tab1.jmeno, tab2.typ, tab2.hodnota
  FROM tab1 
  JOIN (values ('ulica'), ('telefon'), ('email'), ('mobil')) pom (TypDat) on 1=1  -- kartezsky soucin
  LEFT OUTER JOIN tab2 ON tab1.rodne_cislo = tab2.rodne_cislo and pom.TypDat = tab2.Typ
  WHERE tab2.Typ is null

Pokud bys mel tabulku se seznamem typu, pak ji tam das misto toho konstruktu

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny