Als je het woord spijkerbroek skinny zoekt dan komt product spijkerbroek rood ook tevoorschijn omdat deze het woord spijkerbroek bevat maar hoe kan ik de producten uitsluiten als er een woord niet matched?
Dus ik zoek op spijkerbroek skinny dan laat alleen spijkerbroek en spijkerbroek skinny zien.
lijkt me niet iets om een union te gebruiken, maar:
... WHERE productname LIKE '%spijkerbroek%' AND productname LIKE '%skinny%';
Dit geeft dus geen spijkerbroeken die niet skinny zijn, maar wel rode skinny sprijkerbroeken.
Maar de eigenschappen apart opslaan en met id's gaan werken, lijkt me een betere benadering die op termijn sneller zal blijken.
zoeken met LIKE zal niet fijn zijn met veel producten:
Je database moet stuk voor stuk alle records af om in de VARCHAR te gaan zoeken of ergens "skinny" staat.
Daar kan hij geen index op aanleggen om snel te kunnnen zoeken.
Bedankt voor reactie. Ik heb de UNION inderdaad verwijderd en maakt nu gebruik van AND in de queries.
Momenteel zijn het 11.000 artikelen maar dit gaat natuurlijk nog groeien.
Daarom wil ik het toch voor de toekomst gaan maken en wil daarom graag weten wat ik dan het beste als alternatief kan gebruiken voor LIKE zodat het wel met een INDEX gaat werken?
Dus dan zou ik met JOINS moeten werken?
Doet de database zelf dan een INDEX maken op kolommen of moet je dit nog zelf ergens regelen?
Ik snap je voorbeeld wel maar ik denk dag je dit aan iemand anders hebt uitgelegd
SELECT p.product_id, p.naam
FROM products p
JOIN tag_product tp1 ON tp1.product_id = p.product_id
JOIN tags1 ON tags1.tag_id tp1.tag_id AND tags1.tekst = 'rood'
JOIN tag_product tp2 ON tp2.product_id = p.product_id
JOIN tags2 ON tags2.tag_id tp2.tag_id AND tags2.tekst = 'katoen'