förstår inte riktigt...
låt oss säga att jag vill hitta alla bookmarks med taggarna BOLL och SPORT.
Då fungerar;
PHP-kod:
SELECT b.*
FROM tagmap bt, bookmark b, tag t
WHERE bt.tag_id = t.tag_id
AND (t.name IN ('boll', 'sport'))
AND b.id = bt.bookmark_id
GROUP BY b.id
HAVING COUNT( b.id )=2
och jag hittar 1 bookmark, för det finns bara 1 bookmark med dessa två taggarna. Det finns flera bookmarks med taggen SPORT. So far so good!
Men låt oss testa systemet, söker jag på BOLL och KJHAJSGHAGS, vart på KJHAJSGHAGS är en tagg jag vet INTE existerar.
PHP-kod:
SELECT b.*
FROM tagmap bt, bookmark b, tag t
WHERE bt.tag_id = t.tag_id
AND (t.name IN ('boll', 'KJHAJSGHAGS'))
AND b.id = bt.bookmark_id
GROUP BY b.id
HAVING COUNT( b.id )=2
..så hittar jag fortfarande en bookmark. Samma som vid första sökningen.... varför?
För att göra det ännu snurrigare och testar att lägga till en tagg till vi vet inte existerar.
PHP-kod:
SELECT b.*
FROM tagmap bt, bookmark b, tag t
WHERE bt.tag_id = t.tag_id
AND (t.name IN ('boll', 'KJHAJSGHAGS', 'AAAKJSL'))
AND b.id = bt.bookmark_id
GROUP BY b.id
HAVING COUNT( b.id )=3
..så hittar vi inget. Som vi förväntat oss redan i exempel 2.