Hallo Tweakers,
Ik heb een probleem met een query. Ik heb de volgende tabellen:
en
Een profiel kan meerdere talen aan zich hebben gekoppeld.
Nu wil ik , als ik bijvoorbeeld NL als taal mee geef, dat alle profielen die een koppeling 'NL' aan zich hebben. Dat die worden teruggegven. Alleen ik krijg maar geen goeie query, en als ik er wel al 1 heb, dan is deze rete sloom.
Wat ik tot nu toe heb (uitgaan van de taal NL):
of bij meerdere talen:
of
Alleen dit is zo sloom. Weet iemand een betere oplossing?
Ik kan op dit moment er niet op komen en google heeft me ook niet echt geholpen want ik wist niet precies waar op te zoeken.
Bij voorbaat dank
p.s. sorry voor de rare titel
Ik heb een probleem met een query. Ik heb de volgende tabellen:
SQL:
1
2
3
4
| CREATE TABLE IF NOT EXISTS `profielen` ( `naam` varchar(25) NOT NULL, PRIMARY KEY (`naam`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; |
en
SQL:
1
2
3
4
5
6
| CREATE TABLE IF NOT EXISTS `talen` ( `taalID` int(11) NOT NULL auto_increment, `naam` varchar(25) NOT NULL, `taal` varchar(5) NOT NULL, PRIMARY KEY (`taalID`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5420 ; |
Een profiel kan meerdere talen aan zich hebben gekoppeld.
Nu wil ik , als ik bijvoorbeeld NL als taal mee geef, dat alle profielen die een koppeling 'NL' aan zich hebben. Dat die worden teruggegven. Alleen ik krijg maar geen goeie query, en als ik er wel al 1 heb, dan is deze rete sloom.
Wat ik tot nu toe heb (uitgaan van de taal NL):
SQL:
1
2
3
4
5
6
| SELECT * FROM profielen WHERE (SELECT COUNT(*) AS aantal FROM talen WHERE talen.naam = profielen.naam AND talen.taal = "NL") != 0 |
of bij meerdere talen:
SQL:
1
2
3
4
5
6
7
8
9
10
| SELECT * FROM profielen WHERE (SELECT COUNT(*) AS aantal FROM talen WHERE talen.naam = profielen.naam AND talen.taal = "NL") != 0 OR (SELECT COUNT(*) AS aantal FROM talen WHERE talen.naam = profielen.naam AND talen.taal = "DE") != 0 |
of
SQL:
1
2
3
4
5
6
| SELECT * FROM profielen WHERE (SELECT COUNT(*) AS aantal FROM talen WHERE talen.naam = profielen.naam AND (talen.taal = "NL" OR talen.taal = "DE")) != 0 |
Alleen dit is zo sloom. Weet iemand een betere oplossing?
Ik kan op dit moment er niet op komen en google heeft me ook niet echt geholpen want ik wist niet precies waar op te zoeken.
Bij voorbaat dank
p.s. sorry voor de rare titel