Ik zit voor het moment met de handen in het haar, ik ben namelijk een zoek-query aan het opstellen maar het wil maar niet lukken...
Ik zit met de volgende tabellen:
OPM: keywords_companies is dus een kruistabel (je kan je misschien afvragen waarom ik dit gedaan heb, maar dit is omdat keywords ook aan andere tabellen gelinked kunnen worden).
Ik zou nu een zoek-query willen opstellen die in alles gaat zoeken (dus zowel in de companies-tabel als in de gelinkte keywords), en de gevonden companies teruggeeft.
De query die ik op dit moment gebruik is:
Het probleem hiermee is echter dat met deze query de bedrijven dubbel, driedubbel,... worden teruggegeven. Dit komt doordat voor elk gelinkt keyword een volledige rij gejoined wordt, een voorbeeldje ervan:
COMPANIESID,COMPANIESNAME,COMPANIESADDRESS,KEYWORDSNAME
-----------------------------------------
(1,Microsoft,Silicon Valley,keyword1)
(1,Microsoft,Silicon Valley,keyword2)
(1,Microsoft,Silidon Valley,keyword3)
...
Als ik dan dus op 'eywor' gezocht wordt, krijg ik Microsoft 3x in mijn resultatentabel terwijl ik het er maar 1x in zou willen hebben.
Heeft er iemand een idee hoe ik dit het best kan oplossen?
Ik zit met de volgende tabellen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| +--------------------+ | companies | +--------------------+ | companiesId | | companiesName | | companiesAddress | | ... | +--------------------+ +--------------------+ | keywords_companies | +--------------------+ | keywordsId | | companiesId | +--------------------+ +--------------------+ | keywords | +--------------------+ | keywordsId | | keywordsName | | keywordsDescription| +--------------------+ |
OPM: keywords_companies is dus een kruistabel (je kan je misschien afvragen waarom ik dit gedaan heb, maar dit is omdat keywords ook aan andere tabellen gelinked kunnen worden).
Ik zou nu een zoek-query willen opstellen die in alles gaat zoeken (dus zowel in de companies-tabel als in de gelinkte keywords), en de gevonden companies teruggeeft.
De query die ik op dit moment gebruik is:
code:
1
2
3
4
5
6
7
8
9
10
11
12
| SELECT * FROM companies c LEFT JOIN keywords_companies kc ON c.companiesId=kc.companiesId INNER JOIN keywords k ON k.keywordsId=kc.keywordsId WHERE ((c.companiesName LIKE '%".$searchString."%') OR (c.companiesAddress LIKE '%".$searchString."%') OR (k.keywordsName LIKE '%".$searchString."%')) |
Het probleem hiermee is echter dat met deze query de bedrijven dubbel, driedubbel,... worden teruggegeven. Dit komt doordat voor elk gelinkt keyword een volledige rij gejoined wordt, een voorbeeldje ervan:
COMPANIESID,COMPANIESNAME,COMPANIESADDRESS,KEYWORDSNAME
-----------------------------------------
(1,Microsoft,Silicon Valley,keyword1)
(1,Microsoft,Silicon Valley,keyword2)
(1,Microsoft,Silidon Valley,keyword3)
...
Als ik dan dus op 'eywor' gezocht wordt, krijg ik Microsoft 3x in mijn resultatentabel terwijl ik het er maar 1x in zou willen hebben.
Heeft er iemand een idee hoe ik dit het best kan oplossen?