2010-11-28 6 views
0

Ich habe drei Tabellen:suchen Mehrere Tabellen mit SQL Server

____________________ ____________________ ____________________ 
posts     tags     posts_x_tags 
____________________ ____________________ ____________________ 
| id | title | body | id | tag_name  | post_id | tag_id 

Beiträge und Tags haben viele zu viele Beziehung. Ist es möglich, eine Suche nach posts.body ODER posts.title ODER tags.tag_name zu tun.

Dies wird meiner Nähe gibt aber so viele Duplikate:

SELECT * FROM posts p 
INNER JOIN posts_x_tags x ON p.id = x.post_id 
INNER JOIN tags t ON t.id = x.tag_id 
AND t.tag LIKE '%a%' 
OR p.title LIKE '%a%' 
OR p.body LIKE '%a%'; 

Jede Hilfe sehr geschätzt würde.

Antwort

0

Sie können SELECT DISTINCT ... verwenden, um Duplikate aus der Ergebnismenge zu entfernen.

+0

Ya versuchte das. Ich bekomme das: "Der Text-Datentyp kann nicht als DISTINCT ausgewählt werden, da es nicht vergleichbar ist." – Pardoner

+0

@Pardoner: YIKES !! Sie verwenden 'TEXT' als Datentyp irgendwo?! ??!?!? STOPPT DAS JETZT! Dieser Typ ist veraltet - verwenden Sie ihn nicht - verwenden Sie stattdessen 'VARCHAR (MAX)' oder 'NVARCHAR (MAX)' (und diese Typen können auch in einem SELECT verwendet werden!) –

+0

Danke für den Tipp. – Pardoner

Verwandte Themen