1 veld met meerdere waarden

  • Onderwerp starter Onderwerp starter Adis
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Adis

Gebruiker
Lid geworden
19 mrt 2007
Berichten
30
Dag mensen,

ik ben aan het oefenen met het grote SQL leerboek maar ik kom ergens niet uit:
In een veld voer ik meerdere waarden in:
Getallen: 2, 5, 6, 9, 34, 99

Deze getallen moeten mijn eigendommen voorstellen. In een andere tabel heb ik de getallen als primary key gedefinieerd. Dus 2 = Auto. 5 = Fiets 6 = Huissleutel etc.

Hoe kan ik een SQL query maken dat de waarden uit het veld getallen uitleest en ze koppelt aan de naam van de getallen. Ik dacht aan:
Select Getallen
From Eigendommen
Where Eigendommen.Getallen = Middelen.Code And
User.Naam = Mijn naam (omdat ik ingelogd ben en niet mijn kamergenoot. Help mij...:D
 
Dag mensen,

ik ben aan het oefenen met het grote SQL leerboek maar ik kom ergens niet uit:
In een veld voer ik meerdere waarden in:
Getallen: 2, 5, 6, 9, 34, 99

Deze getallen moeten mijn eigendommen voorstellen. In een andere tabel heb ik de getallen als primary key gedefinieerd. Dus 2 = Auto. 5 = Fiets 6 = Huissleutel etc.

Hoe kan ik een SQL query maken dat de waarden uit het veld getallen uitleest en ze koppelt aan de naam van de getallen. Ik dacht aan:
Select Getallen
From Eigendommen
Where Eigendommen.Getallen = Middelen.Code And
User.Naam = Mijn naam (omdat ik ingelogd ben en niet mijn kamergenoot. Help mij...:D

Code:
SELECT Middel.naam
FROM Eigendommen, Middel
WHERE Eigendommen.getal = Middel.Code

Als je ook nog de naam check wilt doen dan moet je in het eerste veld ook nog een naam bijzetten ( of nog beter een key ) en bijvoegen aan de querry:

Code:
Eigendom.naam = <NAAM>
 
Hoi bzub,

dank je voor je reactie maar dit werkt niet. Het werkt niet omdat in het veld meerdere getallen staan. Hij ziet het hele veld als 1 grote getal en die komt in mijn andere tabel niet voor. Zelf ben ik aan het experimenteren als:

Select Getallen
From Eigendommen
WHERE Subselect(Getallen, 0,3) Or Subselect(Getallen,5, 8) etc. Maar dit werkt ook niet echt. Of ik krijg sommige dingen twee keer te zien...
Bij subselect moet ik wel aangeven op welke plaats in het veld hij moet zoeken vandaar de getallen tussen de komma's.

ach ja. . mischien is deze deze vraag te moeilijk voor mij en mij huidige kennis... hehe dank je wel voor je reactie nogmaals...
 
Hoi bzub,

dank je voor je reactie maar dit werkt niet. Het werkt niet omdat in het veld meerdere getallen staan. Hij ziet het hele veld als 1 grote getal en die komt in mijn andere tabel niet voor. Zelf ben ik aan het experimenteren als:

Select Getallen
From Eigendommen
WHERE Subselect(Getallen, 0,3) Or Subselect(Getallen,5, 8) etc. Maar dit werkt ook niet echt. Of ik krijg sommige dingen twee keer te zien...
Bij subselect moet ik wel aangeven op welke plaats in het veld hij moet zoeken vandaar de getallen tussen de komma's.

ach ja. . mischien is deze deze vraag te moeilijk voor mij en mij huidige kennis... hehe dank je wel voor je reactie nogmaals...

Dubbels kan normaal gezien vrij makelijk uit je tabel filteren( bij db2 toch, de database die ik gebruik(te) toch ). Als je eens alle tabellen + enkele tuppels per tabel post dan zal ik eens zien of ik het kan oplossen. Zonder een volledige schema is nogal moeilijk te voorspellen wat een querry zal doen:)
 
Thanks bzub,

ik ga ditg uitzoeken met de substring. Ik meld het als opgelost en ga verder leren. Met de tijd mee zou je wijzer moeten worden.

Groet:)
 
Ik zie dat dit topic gesloten is, maar vraag me toch af waarom je in godsnaam meerdere waarden in een veld zou willen zetten? De kracht van je database zit 'm nu juist in om dat niet te doen maar om bv de tabel zo te splitsen:

Code:
tbl_Spullen( EigendomID, beschijving)
----------------------------
2, Auto
5, Fiets
6, Huissleutel


tbl_Users(UserID, UserName)
---------------------
1, Jan
2, Piet

tbl_Eigendommen(EigendomID, UserID)
----------------------------
2, 1      (=Auto, Jan)
5, 1      (=Fiets, Jan)
5, 2      (=Fiets, Piet)

Mocht je onverhoopt toch alles in een veld willen gooien dan kun je - afhankelijk van de omgeving, maar stel bv VB) eens kijken naar de functie Split()
met split() kun je bv een string gescheiden door komma's in een array gooien. Dan krijg je dus eigenlijk weer een tabel (maar dan in het RAM) en ben je weer terug bij mijn bovenstaande normalisatie.
 
Dag ReneDerks,

Je hebt volkomen gelijk. Ik had een verkeerde structuur bedacht en het is beter om de structuur aan te paasen ipv moeilijke dingen te gaan doen. Thanks voor het meedenken!!

:thumb::thumb::thumb::thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan