[MYSQL] Dubbele join?

Pagina: 1
Acties:

  • Toni
  • Registratie: Februari 2001
  • Niet online
Ik heb 2 tabellen :

1. Nieuws
2. Categorieen

Nieuws heeft de volgende velden :

0. nieuws_id (ohja.. Vergeten en later erbijgezet)
1. nieuws_titel
2. nieuws_categorie_id_1
3. nieuws_categorie_id_2
4. nieuws_tekst
5. nieuws_datum
6. nieuws_auteur

Categorieen heeft de volgende velden

1. categorie_id
2. categorie_naam

Wat is nu heb :

code:
1
2
SELECT nieuws.nieuws_titel, categorieen.categorie_naam, nieuws.nieuws_datum FROM nieuws
LEFT JOIN categorieen ON nieuws_categorie_id_1=categorie_id


Doet het allemaal helemaal primula : dan kan ik een resultset uitdraaien waarbij de categorienamen worden weergegeven die bij het nieuwbericht horen. Wat ik nu wil : van beide categorie_id's de categorienaam weergeven (nieuws_categorie_id_1 en .._id_2)..

Maar ik weet niet helemaal hoe dat moet, ik heb al zitten kijken naar aliassen, maar het is me een beetje onduidelijk of daar de oplossing ligt..

We need more cowbell


Verwijderd

Ik neem aan dat je met nieuws_categorie_id_1 en nieuws_categorie_id_2 een veel op veel relatie wilt maken tussen nieuws en categorieen?

  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
Persoonlijk vind ik je datamodel niet echt netjes (wat als je nog een catagorie aan een nieuwsitem toe wilt voegen), zelf zou ik kiezen voor een derde tabel waarin je je koppelingen opslaat (zodat je een onbeperkt aantal catagorien aan een nieuwsitem kunt koppelen). Vervolgens maak je een array aan die bestaat uit:

catagorieID,
nieuwsitemID,
catagorienaam

En loop je voor elk nieuwsitem wat je weergeeft ff door je array heen en vis je alle catagorienamen eruit op... misschien niet de meest efficiente oplossing, maar het werkt... :)

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


Verwijderd

Zelf zou ik een het als volgt doen:

nieuws
---------
nieuws_id
nieuws_titel
nieuws_tekst
nieuws_datum
nieuws_auteur

categorie
------------------
categorie_id
categorie_naam

kt_nieuws_categorie
--------------------------
nieuws_id
categorie_id

kt_nieuws_categorie wordt dan een koppeltabel waar je inzet per nieuwsitem in welke categorieën hij hoort.

Je query zou dan zo worden:
code:
1
2
3
4
SELECT nieuws.nieuws_titel, categorieen.categorie_naam, nieuws.nieuws_datum
FROM nieuws
INNER JOIN kt_nieuws_categorie USING(nieuws_id)
INNER JOIN categorie USING(categorie_id)

[ Voor 11% gewijzigd door Verwijderd op 29-08-2003 16:23 ]


  • Toni
  • Registratie: Februari 2001
  • Niet online
Hee, alvast bedankt voor jullie reacties. De 3e tabel is tot nog toe geen optie geweest - wellicht kan ik op een gegeven moment niet meer anders en word ik er toch tot gedwongen.

We need more cowbell