[SQL] join op verschillende id's

Pagina: 1
Acties:

  • Matthis
  • Registratie: Juli 2004
  • Laatst online: 05-05 21:44
Ik zou momenteel een scriptje willen schrijven voor het bijhouden van m'n bibliografische referenties. Om redenen van gebruiksgemak zou ik 2 tabellen nodig hebben:

tabel auteurs:
* auteur_id
* auteur_naam

tabel referenties:
* referentie_id
* auteurs
* titel

de auteurs zouden mbv een join eenvoudig gekoppeld kunnen worden. Maar als ik artikels, ... met meerder auteurs heb, lukt dit niet echt. Ik zou m'n auteurs namelijk zo opslaan: auteur1;auteur2;...

Een join is dan (voor zover ik weet) uitgesloten. Per auteur een kolom voorzien ook, want het is niet te voorspellen hoeveel auteurs er aan een artikel, ... meewerken.

Ik had gedacht van in 1 query alle gegevens uit referenties uit te lezen, de auteurs te splitsen en vervolgens de benodigde auteurs selecteren met een 2e query. Maar bestaat er geen elegantere of efficientere oplossing voor mijn probleem?

Alvast bedankt

  • whoami
  • Registratie: December 2000
  • Laatst online: 13:41
auteurs moet je dus zo niet opslaan.
1ste les van normalisatie: repeterende groepen sla je nooit 'komma-gescheiden' of wat dan ook in één veld op.
Repeterende groepen breng je onder in een nieuwe tabel:

tabel auteurs

tabel referenties

tabel: auteur_referenties

Deze laatste tabel maakt de link tussen een of meerdere auteur en hun referentie(s).

https://fgheysels.github.io/


  • Matthis
  • Registratie: Juli 2004
  • Laatst online: 05-05 21:44
ok, bedankt voor het snelle antwoord

  • Matthis
  • Registratie: Juli 2004
  • Laatst online: 05-05 21:44
nog een vraagje dat hierbij aansluit: ik zou ook moeten kunnen zoeken op jaargangen. Alles zou vlot werken wanneer er echter alleen enkelvoudige jaargangen bestaan, bv. jaargang 13. Sommige tijdschriften slaan echter soms ook een jaartje over, zodat het er sprake is van jaargang 14-15.

In het eerste geval, wanneer er alleen enkelvoudige jaargangen gebruikt zouden worden, zou de informatie in een int-veld opgeslagen kunnen worden mbv BETWEEN.

Hoe zou je dan bv. jaargang 1 tot 10 kunnen ophalen als er ergens ook sprake is van jaargang 7-8?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Sla het bijvoorbeeld op als jaargang 7 met een duur van 2 jaar. Neem daarvoor een veld "duur" op. Dan kun je je jaargang opslaan als integer en daarna simpelweg berekenen of een jaargang tussen bepaalde waarden ligt.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Matthis
  • Registratie: Juli 2004
  • Laatst online: 05-05 21:44
damn, _/-\o_

voor de een of andere reden kom ik momenteel gewoon niet op zo'n oplossingen... THX
Pagina: 1