» »

MySQL tabele na podlagi vrednosti

MySQL tabele na podlagi vrednosti

marjan_h ::

Ali se mogoče, da v MySQL bazi narediti tabelo Oseb, ki ima eno od vrstic Poklic, katera lahko zavzame samo vrednosti "Profesor", "Učitelj", "Hišnik". Nato se tabelo Oseb, poveže s tujim ključem od Tabel poklicev? Torej imamo 4 različne tabele; Osebe, Profesor, Učitelj, Hišnik. In na podlagi vrednosti v tabeli Osebe se ta poveže z ustrezno drugo tabelo (Profesor, Učitelj, Hišnik) - (Primarni ključ - Tuji ključ).

Hvala.

HotBurek ::

Ali se da ali ne tako, kot si napisal, bom ugibal da ne.

Po reglcih se pa naredijo dve tabele; Oseba in Poklici.

V tabeli Poklici je takole:

id | poklic
0 | Profesor
1 | Učitelj
2 | Hišnik

V tabeli Osebe pa imaš FK, ki je vezan na PK (id) v tabeli Poklici.

Primer tabele Osebe:

id | ime | fk_poklic
0 | Janez | 0
1 | Micka | 2
2 | Franz | 1

Potem pa narediš SELECT QUERY z JOIN-tom:

SELECT `os`.`id` AS 'os_id', `os`.`ime` AS 'os_ime', `po`.`poklic` AS 'po_poklic',
FROM `database_1`.`osebe` AS `os`
JOIN `database_1`.`poklici` AS `po`
ON `os`.`fk_poklic` = `po`.`id`;


Janez je profesor, Micka hišnik, Franz pa učitelj.
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window

Zgodovina sprememb…

  • spremenilo: HotBurek ()

smacker ::

Ahim ::

marjan_h je izjavil:

Ali se mogoče, da v MySQL bazi narediti tabelo Oseb, ki ima eno od vrstic Poklic, katera lahko zavzame samo vrednosti "Profesor", "Učitelj", "Hišnik". Nato se tabelo Oseb, poveže s tujim ključem od Tabel poklicev? Torej imamo 4 različne tabele; Osebe, Profesor, Učitelj, Hišnik. In na podlagi vrednosti v tabeli Osebe se ta poveže z ustrezno drugo tabelo (Profesor, Učitelj, Hišnik) - (Primarni ključ - Tuji ključ).

Hvala.

Seveda se da, pac JOIN naredis po vec kot enem kriteriju:

SELECT vse,mogoce,stvari,ki,te,zanimajo FROM osebe o
LEFT JOIN profesorji p ON o.oseba_type = 'Profesor' AND o.oseba_id = p.id
LEFT JOIN ucitelji u ON o.oseba_type = 'Ucitelj' AND o.oseba_id = u.id
LEFT JOIN hisniki h ON o.oseba_type = 'Hisnik' AND o.oseba_id = h.id


Ali pa UNION treh subqueryjev, ce se stolpce da zdruziti po vrednostih, ampak ce niso profesor, ucitelj in hisnik (po opisu modela) med sabo bistveno drugacni, je vprasanje ce se splaca, kot je omenil ze HotBurek - imas pac eno tabelo pa je to to.

Aja pa ce je na zacetku dejansko misljeno, da mora biti oseba_type samo iz nabora omejenih vrednosti (in ne da je nastavljena samo na eno od njih), moras pa dodati se sifrant teh vrednosti, kar pomeni ali enum (bljak ;(( ) ali pa loceno tabelo in foreign key constraint na oseba_type (potem pa niso vec samo 4 tabele, kot zelis v nadaljevanju vprasanja, temevc 5).


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

SQL pomoč

Oddelek: Programiranje
132412 (1826) miko22
»

SQL Parent key not found

Oddelek: Programiranje
71072 (995) Ciklamen
»

podatkovne baze pomoč

Oddelek: Programiranje
193077 (2630) kr?en
»

Objektno programiranje Java

Oddelek: Programiranje
111393 (1251) Spartacus
»

Access in malo večja baza

Oddelek: Programska oprema
71081 (976) |Luka|

Več podobnih tem