Let’s say I have table with column ‘URL’ whrere I store urls like this
-
one/two
-
one/two/three
-
alpha/omega
And I want to get data from database for specific url and if it is not found I remove the last part of url and search again:
Example:
I have url like one/two/three/four/five.
I do search for “one/two/three/four/five”
if not found search again for “one/two/three/four”
if not found search again for “one/two/three”
if not found search again for “one/two”
I would like to have something like:
SELECT * FROM db WHERE url=one/two/three/four/five
UNION
SELECT * FROM db WHERE url=one/two/three/four/five
UNION
SELECT * FROM db WHERE url=one/two/three/four
UNION
SELECT * FROM db WHERE url=one/two/three
UNION
SELECT * FROM db WHERE url=one/two
UNION
SELECT * FROM db WHERE url=one
but I want to stop searching if the row is found.
Is this possible or do I have to do it with separated queries.
Thanks for help.
I thing that this is the most elegant approach to your question. This statement is independent depth path and you don’t need to split constant url in subsequent selects:
I have tested this query in MySQL, also you can check it! (in MSSQL syntax)