Að sækja gögn úr þrem töflum

Í töflunni Einstaklingar er skrásettur maður að nafni Grjóti Stefsson, sem er forstjóri hjá Hugbrjót ehf sem er í samskiptum við okkar fyrirtæki. Við viljum geta sótt upplýsingar um Grjóta, Hugbrjót og annað starfsfólk Hugbrjóts sem gætu verið í grunninum?

Í töflunum, Fyrirtæki og Einstaklingar er listi af aðilum sem hafa heimilisföng sem götuheiti og póstsvæði. Póstsvæði er samsett gildi úr póstnúmeri og heiti svæðis og geymt í töflunni Póstsvæði.

Nú er gerð fyrirspurn sem sækir upplýsingar um Hugbrjótur ehf. og alla tengiliði sem við höfum við það fyrirtæki, ásamt póstsvæðum: „Veldu allar færslur um einindi í töflunum Einstaklingar og Fyrirtæki, þar sem númer fyrirtækis er 1 og fyrirtækis númer einstaklings sé líka 1, birtu einnig upplýsingar um póstsvæði í niðurstöðunni.“

Á gagna­grunns­máli væri þetta orðað þannig:

select * from einstaklingar, fyrirtaeki, postsvaedi
 where fyrirtaeki.fyrirt_nr = 1
 and fyrirtaeki.fyrirt_nr = einstaklingar.fyrirt_nr
 and fyrirtaeki.postnumer = postsvaedi.postnr;

Gagnagrunns kerfið myndi skila eftirfarandi gögnum:

 1      1      Grjóti Stefsson      MD. Tölvunarfræði    Forstjóri     Aflatröð 5    0110   199-1234      599-1234   999-1234      grjoti@aflatradir.net      1      Hugbrjótur ehf.      Sílikongarðar 25     0210   599-1234   hugbrjotur@hugbrjotur.net  www.hugbrjotur.net   0210   Garðabæ       Garðatorgi 5
4      1      Fríða Fróðadóttir    MD. Heimspeki Forstjóri     Eindartröð    0105   199-3412      599-3412       999-3412      gudda@grandatradir.net     1      Hugbrjótur ehf.      Sílikongarðar 25     0210   599-1234   hugbrjotur@hugbrjotur.net  www.hugbrjotur.net   0210   Garðabæ       Garðatorgi 5

 

Einnig mætti setja sömu fyrirspurn upp þannig að færri dálkar kæmu fram í  niðurstöðunum samanber eftirfarandi:

select e.einst_nr, e.fyrirt_nr, e.nafn, e.starfstitill,
 f.fyrirt_nr, f.fyrirt_nafn, f.fyrirt_heim, f.postnumer,
 f.adalsimi, p.postnr, p.heiti
 from einstaklingar as e, fyrirtaeki as f, postsvaedi as p
 where f.fyrirt_nr = 1
 and f.fyrirt_nr = e.fyrirt_nr
 and f.postnumer = p.postnr;

Niðurstöðurnar væru þá ögn læsilegri í framsetningu:

1 1 Grjóti Stefsson Forstjóri 1 Hugbrjótur ehf. Sílikongarðar 25 0210 599-1234 0210 Garðabæ
4 1 Fríða Fróðadóttir Markaðsstjóri 1 Hugbrjótur ehf. Sílikongarðar 25 0210 599-1234 0210 Garðabæ

Myndin hér á eftir sýnir hvernig grunnurinn finnur línu í fyrirtækis töflunni þar sem fyrirtækis númerið er 1. Tvær línur í einstaklings töflunni þar sem fyrirtækis númerið er líka 1. Póstnúmer og heiti svæðis í póstsvæðis töflunni þar sem póstnúmerið er hið sama bæði í póstnúmeratöflunni og fyrirtækistöflunni.

skemamynd
Myndræn framsetning á fyrirspurnunum hér fyrir framan.

 

This entry was posted in Gagnagrunnar og SQL. Bookmark the permalink.

Comments are closed.