Skip to content

Verandert query zodat ie meerdere resultaten kan tonen en altijd werkt

Maarten van den Berg requested to merge meerdere_resultaten into master

Het probleem lag in de query die werd gebruikt: SELECT files.path FROM files WHERE files.id =(SELECT tags.id FROM tags WHERE tags.name = @parameter) zoekt het bestand waar de id van het bestand hetzelfde is als van de opgegeven tags, maar we weten weinig over de ids van bestanden en tags, want die kunnen (als de database veel veranderd wordt) vaak veranderen.

Om dit te fixen heb ik het opgesplitst in twee queries, één om de id van de tag waarop wordt gezocht te vinden, en één die de id van deze tag gebruikt om de bestanden met deze tag uit de tagmap te halen (en hun path te tonen).
Query 1: SELECT tags.id FROM tags WHERE tags.name = @PARAMETER
Query 2: SELECT files.path FROM entries JOIN files ON entries.file_id = files.id WHERE entries.id IN (SELECT tagmap.entry_id FROM tagmap WHERE tagmap.tag_id = @parameter)

Het is waarschijnlijk beter om een query te maken die de id van de tag zelf uit de database trekt en daarna gelijk gebruikt in de zoekopdracht, maar daar moeten we later dan nog naar kijken.

Merge request reports