Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem SQL - prepojenie tabuliek

Zdravím, potrebovala by som pomôcť pri prepájaní tabuliek.
Mám tabuľky vyrobca, liek a diagnoza, ktore spajam v tabuľke info. Problém je, že niektorý výrobca lieky nemá alebo nie na všetky diagnózy sú lieky, a tak je tam hodnota NULL. Tá tam však byť nemôže, keďže je to primary key. Neviete mi niekto poradiť ako to mám vyriešiť?
Ďakujem.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Co znamená, že je spojuješ v tabulce info?
Wikan 20.04.2013 17:13
Wikan
Znamená to, že mám kvázi 3 nezávislé tabuľky, ktoré potrebujem prepojiť .. a prepájam to tak, že v k…
k3 20.04.2013 17:17
k3
Ale to propojení nemáš mít v nějaké tabulce. Propojení definuješ pomocí klíčů.
Wikan 20.04.2013 17:20
Wikan
Nás učia, že to máme mať v tabuľke, ja iné riešenie neviem.. ale rada sa dozviem o inom.
k3 20.04.2013 17:22
k3
Tak to jsi to buď špatně pochopila a nebo spíš špatně píšeš, čeho chceš vlastně dosáhnout.
Wikan 20.04.2013 17:23
Wikan
Nás učia robiť všetko ako je to v tejto fyzickej schéme autoservisu. Sú tam 3 tabuľky, prepojené v j… nový
k3 20.04.2013 17:33
k3
Ale tam ta třetí tabulka nese nějakou informaci. Jakou informaci nese ta tvoje tabulka info? nový
Wikan 20.04.2013 17:39
Wikan
Pôvodne niesla.. ale už nenesie. Takže v podstate by som to mohla spraviť tak, že v tabuľke DIAGNOZ… nový
k3 20.04.2013 17:42
k3
Ne. Budeš mít tabulky Vyrobce, Lek, Diagnoza a spojovací tabulku LeciDiagnozu, která ti rozloží vzta… nový
Wikan 20.04.2013 17:47
Wikan
Takže v tabuľke DIAGNOZA bude id_diagnozy ako primary a id_lieku ako primary key? V LIECI_DIAG bude… nový
k3 20.04.2013 17:54
k3
Ne. Diagnoza bude mít pouze primární klíč, Lék bude mít primární klíč a cizí klíč na tabulku Výrobce… nový
Wikan 20.04.2013 17:57
Wikan
Takže si píšem DIAGNOZA: id_diagnoza <pk> LIEK: id_lieku <pk> id_vyrobcu <fk> LIECI_DIAG: id_diagnoz… nový
k3 20.04.2013 18:03
k3
Ano. nový
Wikan 20.04.2013 18:04
Wikan
Dobre, problém som vyriešila, ale rozhasilo mi to celú tabuľku. Kde bude zadávať teraz názov diagnóz… nový
k3 20.04.2013 18:07
k3
Název diagnózy logicky do tabulky Diagnozna. Jaký asi může mít výrobce a lék vztah? Výrobce vyrábí l… poslední
Wikan 20.04.2013 19:23
Wikan
Šlo by sem vložit strukturu tabulek a jakým SELECTem vybíráš data? SQL je konkrétně jaký? MySQL, MS…
host 20.04.2013 17:15
host
Dáta len vkladám, nevyberám. SQL je najzákladnejší aký môže byť.
k3 20.04.2013 17:19
k3
Tak teda bohužel ani jedné tvé odpovědi nerozumím. Co je nejzákladnější SQL? Snad má ta databáze něj…
host 20.04.2013 17:22
host
SQLplus Každý stĺpec v tom .pdf je u mňa samostatná tabuľka.. a ja z toho robím tie riadky.. či ani… nový
k3 20.04.2013 17:35
k3
pokud spojuješ tabulky na sloupci, kde na nějaké straně je hodnota NULL a ty ten řádek chceš pak máš… nový
AZOR 20.04.2013 17:26
AZOR

Tak teda bohužel ani jedné tvé odpovědi nerozumím.
Co je nejzákladnější SQL? Snad má ta databáze nějaký název, ne? Syntaxe jednotlivých DB se totiž liší.

Když jen vkládáš data, není mi jasné, jak je "spojuješ" v tabulce info. Data by se měla vkládat do samostatných tabulek (vyrobca, liek a diagnoza), tzv. číselníky a potom data vybereš (spojíš) SELECTem.

pokud spojuješ tabulky na sloupci, kde na nějaké straně je hodnota NULL a ty ten řádek chceš pak máš navýběr následující slova a typy spojení:

a left join b on (a.i=a.b) - všecno v áčku, i když to nemá v béčku záznam
a right join b on (a.i=a.b) - všechno v béčku i když to v á nemá záznam
a full outer join b on (a.i=b.i) - všechno z obou tabulek
-- a nebo pro oracle lepší quotace:
select * from a,b where a.i=b.i(+)
select * from a,b where a.i(+)=b.i

a samozřjmě fungují i operátory typu = OR a.i IS NULL.

Musíš použít typ spojení, který dovolí nemít relaci pro obraz řádku v druhé tabulce, a od toho je LEFT, RIGHT join (at již normálním či zkráceným zápisem (+) na oracle)

Zpět do poradny Odpovědět na původní otázku Nahoru