Mám dotaz : když mám např tabulku "zamestnanci" id,jmeno,funkce - a to funkce je cizí klíč odkazující do tabulky funkce kde jsou tyto funkce např id = 1 : Opravář atd....
Lze to nějak využít nebo je lepší mít v tý tabulce rovnou ty jejich funkce ????
Jestli je to lepší mít tou vazbou , tak jak mi to pomůže třeba při výpisu z db nebo tak ....
Děkuji za odpověď .
Fórum › MySQL
Vazby
Ak som to spravne pochopil, tak sa pytas ci mas vtvorit nieco ako ciselnik.
Podla mna, pri malych tabulkach to velky vyznam nema, ale ak mas obrovsku databazu, tak by to mohlo usetrit nejake miesto. Predsa len nejake ID bude zaberat menej ako nejaky varchar "Veduci vyroby oddelenia plaste pre pneumatiky". I ked veduci vyroby bude asi len jeden :).
da sa to zapisat jednym dotazom, pouzijes nejaky JOIN (niekde sa zapisuje ako ciarka)
toto by ti malo vratit tabulku, ktora vznikne spojenim tych dvoch(spojenie prebieha cez to id v tabulke profesie)
SELECT * FROM zamestnanci
LEFT JOIN profesie ON zamestnanci.profesia=profesia.id
EDIT: pochopil som ze to chces pre mySQL, mozu tam byt chyby kazdopadne tu je referencna prirucka k JOINom http://dev.mysql.com/doc/refman/5.0/en/join.html
Myslim, ze sa to da urobit aj taktolavor píše:#
# da sa to zapisat jednym dotazom, pouzijes nejaky JOIN (niekde sa zapisuje ako ciarka)#
#toto by ti malo vratit tabulku, ktora vznikne spojenim tych dvoch(spojenie prebieha cez to id v tabulke profesie)#
#SELECT * FROM zamestnanci#
# LEFT JOIN profesie ON zamestnanci.profesia=profesia.id#
#EDIT: pochopil som ze to chces pre mySQL, mozu tam byt chyby kazdopadne tu je referencna prirucka k JOINom http://dev.mysql.com/doc/refman/5.0/en/join.html
SELECT * FROM zamestnanci AS t1, profesia AS t2 WHERE t1.funkcia = t2.ID;
pozri toto: http://www.linuxsoft.cz/article.php?id_article=827[/url],[url]http://www.linuxsoft.cz/article.php?id_article=837[/url],[url]http://www.linuxsoft.cz/article.php?id_article=841[/url],[url]http://www.linuxsoft.cz/article.php?id_article=854
inak navrhnute riesenie je rozhodne dobry (usporny) napad. v tvojom pripade cim je menej profesii tym lepsie. v skutocnosti sa to ani inak neroby.
aj ked ja osobne som lenivi na studovanie nejakych joinov a na toto pouzivam poddotazy.
Tak sem si s tim začal hrát a narazil jsem , mám tabulky :
CREATE TABLE `knihy` (
`id` int(10) NOT NULL auto_increment,
`Nazev` varchar(100) character set latin2 collate latin2_czech_cs default NULL,
`Popis` text character set latin2 collate latin2_czech_cs,
`Zanr` int(10) NOT NULL default '0',
`Image` varchar(10) character set latin2 collate latin2_czech_cs default NULL,
`Autor` int(10) default NULL,
`Datum` varchar(20) character set latin2 collate latin2_czech_cs default NULL,
`Cena` int(10) NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `Autor` (`Autor`),
KEY `Zanr` (`Zanr`)
)
CREATE TABLE `zanry` (
`id` int(10) NOT NULL auto_increment,
`Nazev_zanru` varchar(30) character set latin2 collate latin2_czech_cs NOT NULL default '',
`Popis_zanru` text character set latin2 collate latin2_czech_cs NOT NULL,
PRIMARY KEY (`id`)
)
CREATE TABLE `autori` (
`id` int(20) NOT NULL auto_increment,
`Jmeno` varchar(50) character set latin2 collate latin2_czech_cs NOT NULL default '',
`Zeme` varchar(40) character set latin2 collate latin2_czech_cs NOT NULL default '',
`Popis_autor` text character set latin2 collate latin2_czech_cs NOT NULL,
PRIMARY KEY (`id`)
)
Potřebuji vybrat 1 knihu z databáze s id uloženém v $id , používám na to tento dotaz:
SELECT * FROM knihy LEFT JOIN (autori, zanry) ON (knihy.Autor= autori.id AND knihy.Zanr= zanry.id) WHERE knihy.id ='$id'
ALE tento dotaz mi vrátí tu knihu tolikrát kolik je záznamů v tabulce autori !!!!
Nevíte prosím co s tím ??? // aby mi to vracelo pouze tu jednu knihu
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
SQL dotaz vazby 1:N — založil Petr1236
Vazby mezi tabulkami s programem MS SQL — založil SQL newbie
Jak zobrazit graficky strukturu a vazby databáze? — založil Honza
Moderátoři diskuze