Vet inte om jag förstod alla sidor i ditt problem men borde inte detta fungera?
SELECT * FROM posts WHERE id IN (SELECT post_id FROM filter_posts WHERE filter_id=ditt_filter_id);
2 svar · 399 visningar · startad av DavidB
Tjena
försöker att filtrera ut vissa poster från en databas men har stött på problem
mina tabeller serut såhär:
POSTS
id | text
FILTER_POSTS
id | post_id | filter_id
det jag vill är att beroende på vilka värde man valt i filtertabellen så skall
man få fram de poster från POSTS som är relaterade till dessa.
filter_id får jag från några dropdownlistar som jag har på min websida.
har försökt med följande sql-fråga:
SELECT *.posts FROM posts, filter, filter_posts
WHERE posts.id = filter_posts.post_id
AND filter_posts.filter_id = 5
AND filter_posts.filter_id = 7
får inte ut något värde alls med ovanstående kod.
använder jag dock denna så får jag ut de poster som är relaterade till filter 5.
SELECT *.posts FROM posts, filter, filter_posts
WHERE posts.id = filter_posts.post_id
AND filter_posts.filter_id = 5
ser tyvärr ingen lösning på detta, börjar kanske bli lite trött. nån som ser hur jag skall göra?
använder mysql
Vet inte om jag förstod alla sidor i ditt problem men borde inte detta fungera?
SELECT * FROM posts WHERE id IN (SELECT post_id FROM filter_posts WHERE filter_id=ditt_filter_id);
DavidB skrev:
har försökt med följande sql-fråga:
SELECT *.posts FROM posts, filter, filter_posts WHERE posts.id = filter_posts.post_id AND filter_posts.filter_id = 5 AND filter_posts.filter_id = 7får inte ut något värde alls med ovanstående kod.
Nej, det är ju inte så konstigt. Filter_id kan ju inte vara både 5 och 7, på samma post.
AND filter_posts.filter_id IN (5, 7)
Sedan ska det vara posts.*, inte *.posts.