Vazby – MySQL – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vazby – MySQL – Fórum – Programujte.comVazby – MySQL – Fórum – Programujte.com

 

Dominik0
Super člen
25. 5. 2007   #1
-
0
-

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ěď .

Nahlásit jako SPAM
IP: ...–
25. 5. 2007   #2
-
0
-

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 :).

Nahlásit jako SPAM
IP: ...–
Dominik0
Super člen
25. 5. 2007   #3
-
0
-

A jak je to s tím výpisem , atd ....
Pomůže mi teda nějak ta vazba, nebo budu muset stejně nejprve zjistit to číslo funkce a pak dalším dotazem zjistit jaká k tomu číslu patří funkce ?

Nahlásit jako SPAM
IP: ...–
25. 5. 2007   #4
-
0
-

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

Nahlásit jako SPAM
IP: ...–
Smokie0
Expert
25. 5. 2007   #5
-
0
-

lavor 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

Myslim, ze sa to da urobit aj takto
SELECT * FROM zamestnanci AS t1, profesia AS t2 WHERE t1.funkcia = t2.ID;

Nahlásit jako SPAM
IP: ...–
olgo0
Věrný člen
25. 5. 2007   #6
-
0
-
Nahlásit jako SPAM
IP: ...–
"Boze, dopraj mi, prosim ta, petdesiat rokov prace a zabavy, a potom nahlu smrt v spanku." J. Grisham
Dominik0
Super člen
27. 5. 2007   #7
-
0
-

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

Nahlásit jako SPAM
IP: ...–
Dominik0
Super člen
27. 5. 2007   #8
-
0
-

Jo a ještě jedna věc: Nevíte jak se v phpmyadminovi vypíná case-sensitivita nebo jak se dá nějak obejít ???
Děkuji za odpověď !

Nahlásit jako SPAM
IP: ...–
Dominik0
Super člen
27. 5. 2007   #9
-
0
-

Prosím lidi poraďte , docela bych to potřeboval !!
Díky !

Nahlásit jako SPAM
IP: ...–
harleyka
~ Anonymní uživatel
2 příspěvky
28. 5. 2007   #10
-
0
-

To don_Dominique:
Zkus to takhle:

select * from knihy left join autori on (knihy.autor = autori.id) left join zanry (knihy.zanr = zanry.id)

where knihy.id='$id'

Nahlásit jako SPAM
IP: ...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 1 host

Podobná vlákna

SQL dotaz vazby 1:N — založil Petr1236

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý