Hallo mensen van phphulp.
Ik ben op dit moment een oud programmaatje wat intern draait aan het (proberen) te repareren. Het is aardig oud (nog gemaakt in cobalt) en de database is niet echt 'optimaal'. Ik kom niet uit 1 query wat mij redelijk simpel lijkt maar toch niet werkt. Ik heb de volgende database opzet.
<?php
tbl_bedrijf_enter
bedrijf_id int
bedrijf_naam varchar(50)
bedrijf_adres varchar(500)
tbl_bedrijf_gecert
bedrijf_id int
gecert_id int
tbl_gecert
gecert_id int
gecert_naam varchar(30)
gecert_sub_naam varchar(30)
gecert_port varchar(30)
?>
In principe is de opzet dus simpel. Een bedrijf kan meerdere gecert hebben (zijn een soort van speciale nummers) de gecerts worden gekoppeld aan bedrijven door middel van de koppeltabel tbl_bedrijf_gecert.
Nu is in tbl_gecert het mogelijk dat de volgende datarijen aanwezig zijn (als voorbeeld)
<?php
gecert_id gecert_naam gecert_sub_naam gecert_port
1 ty25 1 x23yi
2 ty25 2 xui34
3 ty28 1 yui23
4 ty28 2 yui11
5 ty28 3 yui90
6 ty30 1 a33ab
6 ty30 2 a3312
?>
Zoals te zien is is deze tabel niet optimaal. Als ik zelf zou beginnen zou ik gecert_naam in een aparte tabel hebben gezet en gecert_subnaam daaraan koppelen.. maar het is even niet anders(helaas).
Wat ik wil bereiken is bedrijven tonen die aan een aantal opgegeven gecert_naam bezitten. Dus bijvoorbeeld 'geef alle bedrijf_id die gecert_naam ty25 en ty30 bezitten
bedrijf_id gecert_naam
1 ty25
1 ty28
1 ty30
Wat mijn oplossing dan was, was om het met de volgende query te doen:
<?php
SELECT b.bedrijf_id, c.gecert_naam FROM tbl_bedrijf_enter be JOIN tbl_bedrijf_gecert bg ON be.bedrijf_id = bg.bedrijf_id JOIN tbl_gecert g ON bg.gecert_id = g.gecert_id WHERE g.gecert_naam = 'ty25' AND g.gecert_naam = 'ty30' GROUP BY g.gecert_naam
?>
Dit geeft alleen 0 resultaten terug. Ik denk dat het komt door de tabel opzet maar ik heb geen idee hoe ik het anders zou moeten opvragen.
Ik weet dat dit een lange post is maar zou iemand mij hiermee kunnen helpen? Alvast bedankt.
1.371 views