Rugsėjis21
SQL atranka pagal kelis kriterijus (
163)
Rašinio pavadinimas gal ir neaiškus, tačiau situacija paprasta: turime straipsnių ir straipsnių žymių (tags) lenteles, sujungtas ryšiu „1..n“. Reikia atlikti paiešką (atrinkti straipsnius) pagal kelias žymes (kai visos nurodytos žymės priklauso straipsniui). Sprendimas žemiau.
Lentelių struktūra
+-------------+ +-------------+
| articles | | tags |
+-------------+ +-------------+
| id | | id |
|(kiti laukai)| | articleId |
+-------------+ | tag |
+-------------+
SQL užklausa:
SELECT a.* FROM articles AS a INNER JOIN tags AS t ON a.id=t.articleId WHERE t.tag='Žymė 1' OR t.tag='Žymė 2' GROUP BY a.id HAVING COUNT(*)=2
Dinamiškai formuojant tokią užklausą HAVING dalyje reikia naudoti tokį skaičių, kiek žymių dalyvauja užklausoje.

Žymės RSS
