Hét vraag- en antwoordplatform van Nederland

Hoe kan ik met SQL een kolom uit een referentie tabel halen?

Het is alweer te lang geleden.

Ik heb een hoofdtabel "items" met de velden: Id, naam, inhoud.
Er is een referentietabel "Labels" met de velden Id, labeltekst
Er is een koppeltabel "ItemLabel" met de velden Id, ItemID, LabelID.

Nu wil ik een select maken waarbij er een uitdraai is van de hoofdtabel "items" met de kolomen Id, naam, inhoud, label

Een gewone sql query is dan SELECT Id, naam, inhoud FROM Items
Hoe ziet de query eruit waarbij de labeltekst wordt opgezocht voor die rij uit de koppeltabel en de referentietabel?

Toegevoegd na 10 minuten:
OK ik heb nu dit...

SELECT items.id, labels.text, items.title, items.text
FROM items
INNER JOIN ItemLabel
ON items.id=ItemLabel.Item
INNER JOIN Labels
ON ItemLabel.Label=Labels.ID

Maar dit geeft alleen nog maar de items die ook een label hebben. Terwijl er ook items zijn ZONDER labels. De query moet alle items zijn (met en zonder label).

Toegevoegd na 12 minuten:
Laat maar, ik ben eruit (dank zij w3schools). Het is zo lang geleden...

SELECT items.id, labels.text, items.title, items.text
FROM items
LEFT JOIN ItemLabel
ON items.id=ItemLabel.Item
LEFT JOIN Labels
ON ItemLabel.Label=Labels.ID

Verwijderde gebruiker
13 jaar geleden
Geef jouw antwoord
0 / 2500
Geef Antwoord

Het beste antwoord

Probeer i.p.v. INNER JOIN ItemLabel eens LEFT OUTER JOIN ItemLabel
rose
13 jaar geleden

Andere antwoorden (2)

Select * from table1 inner join table2 on table1.referentie = table2.referentie.
Verwijderde gebruiker
13 jaar geleden
SELECT i.Id, i.naam, i.inhoud, l.labeltekst, p.ItemID, p.LabelID FROM i as items, l as labels, p as ItemLabel WHERE ItemID = LabelID

Je maakt alleen de fout dat je een koppeltabel aanmaakt. Dat hoort normaal niet. Je hebt een id, das het unieke nummer voor het record, en daarnaast heb je dan een referentie id dat in zowel Items als Labels staat. Bijv. een artikelnummer. Dan krijg je dus je tabellen:
Items: id, referentie, naam, inhoud
Labels: id, referentie, labeltekst

En je query:
SELECT i.id, i.naam, i.inhoud, l.id, l.referentie, l.labeltekst FROM i as items, l as labels WHERE i.referentie = l.referentie

Succes ;)
Verwijderde gebruiker
13 jaar geleden
Deel jouw antwoord
0 / 2500
Geef Antwoord
logo van Kompas Publishing

GoeieVraag.nl is onderdeel van Kompas Publishing