[SQL] SQL met 3 tables combineren

Pagina: 1
Acties:

  • porn*
  • Registratie: Januari 2001
  • Laatst online: 10-09 22:57

porn*

...take on the world!

Topicstarter
Ik heb een klein vraag, aangezien ik niet zo goed ben in SQL :)

Ik heb een db met oa. 3 tabellen: ARTICLE, ARTICLE_GROUP en LINK_ART_GRP.

In de eerste tabel staan artikelen (oa. NAAM en ID), in de 2e staan groepenvan artikelen (ook NAAME en ID), en in de 3e tabel staat welke artikelen in welke groep voorkomen (ARTIKEL_ID en GROUP_ID). Zodoende moet er dus een koppeling gemaakt worden. Nu wil ik een SQL-statement maken dat alle namen uit een bepaalde groep haalt. Dus bijv. alle namen van de artikelen die voorkomen in groep met id 5. Hoe moet ik mijn SQL dan formuleren?

Edit: ARTICLE_GROUP heb ik eigenlijk niet nodig merk ik, dus is het maar een koppeling tussen 2 tabellen.

Edit: eigenlijk zijn het maar 2 tabellen zie ik, want ARTICLE_GROUP heb ik dus eigenlijk niet nodig :)

Ik dacht zelf zo:
SELECT * FROM ARTICLE WHERE LINK_ART_GRP.ID_ARTICLE=<ownerid>;

waarbij <ownerid> door het programma ingevuld wordt, het is dus het id van de groep waar de artikelen onder vallen. Dit werkt echter niet. Kunnen jullie mij misschien helpen? Bvd.

Bnet pindle#2913


  • porn*
  • Registratie: Januari 2001
  • Laatst online: 10-09 22:57

porn*

...take on the world!

Topicstarter
Uhm ik kan niet editen? Werkt wel maar het bericht wordt niet aangepast :?

Ik zie nu dat ik maar 2 tabellen nodig heb, ARTICLE_GROUP bevat voor het moment geen nuttige info.

Bnet pindle#2913


  • porn*
  • Registratie: Januari 2001
  • Laatst online: 10-09 22:57

porn*

...take on the world!

Topicstarter
Heb 't al met Access uitgedokterd :)

De volgende sql statement werkt:

SQL:='SELECT ARTICLE.ART_NAME, LINK_ART_GROUP.ID_GROUP, LINK_ART_GROUP.ID_ARTICLE FROM ARTICLE INNER JOIN LINK_ART_GROUP ON ARTICLE.ID=LINK_ART_GROUP.ID_ARTICLE WHERE LINK_ART_GROUP.ID_GROUP='+ownerid;

Is deze ook een beetje efficient?

Bnet pindle#2913


Verwijderd

code:
1
2
3
4
5
6
SELECT DISTINCT  art.ID
,           art.Naam 
FROM         article art
,           article_group grp
WHERE       art.ID       =     grp.artikel_ID
AND       grp.group_ID   =     5

  • porn*
  • Registratie: Januari 2001
  • Laatst online: 10-09 22:57

porn*

...take on the world!

Topicstarter
Van jouw code heb ik gemaakt:
code:
1
2
3
4
5
6
SQL:='SELECT DISTINCT  art.ID '+
     ',         art.ART_NAME '+
     'FROM       ARTICLE art '+
     ',         LINK_ART_GROUP link '+
     'WHERE     art.ID    = link.ID_ARTICLE '+
     'AND         link.ID_GROUP = '+ownerid;

Welke is nu het snelst en waarom, deze methode of die van Access met inner joins? Met snelst bedoel ik dus beste voor de db, zo weinig mogelijk load etc.

Bnet pindle#2913