2017-03-21 8 views
0

Ich bin Texte zu Keywords. Ich brauche alle Texte zurück, die zwei Schlüsselwörter enthalten (4) und (7):Wirklich einfache SQL-Abfrage

TextID KeywordID 
2 4 
2 7 
3 4 
4 4 
5 4 
5 7 
6 4 
6 7 
7 4 
7 7 
8 4 
9 4 
10 4 
10 7 
11 4 
12 4 

Das Problem ist, wie Texte auszuschließen, die IDs 3,4,8,9,11 nicht beide wie Text enthalten (sie sollten nicht in den Ergebnissen sein)?

Jede Hilfe wäre sehr willkommen!

Antwort

1

Angenommen, Sie haben keine doppelte textId-KeywordId Paare, sollte unten arbeiten:

SELECT textid 
FROM table 
WHERE keywordId in (4,7) 
GROUP BY textid 
HAVING COUNT(*) >= 2 

Wenn Sie dups haben, Sie count(distinct keywordId) wie pro @ Gordon Antwort verwenden können.

aktualisiert Hier MS Access-Abfrage:

SELECT tblPerformanceKeyword.TextID 
FROM tblPerformanceKeyword 
WHERE tblPerformanceKeyword.KeywordID = 4 Or tblPerformanceKeyword.KeywordID = 7 
GROUP BY tblPerformanceKeyword.TextID 
HAVING COUNT(tblPerformanceKeyword.KeywordID) >= 2; 
+0

Zugegeben, das ist, warum ich dieses Szenario vor meiner Antwort angegeben. Wie auch immer, werde das hinzufügen, danke. –

+0

Vielen Dank in der Tat für Ihre Antworten! Leider benutze ich MSAccess. Könnten Sie mir bitte die genaue Syntax basierend auf den obigen Lösungen mitteilen? Hier ist, wie es aussieht, ursprünglich: SELECT tblPerformanceKeyword.PerformanceKeywordID, tblPerformanceKeyword.TextID, tblPerformanceKeyword.KeywordID VON tblPerformanceKeyword WHERE (((tblPerformanceKeyword.KeywordID) = 4 oder (tblPerformanceKeyword.KeywordID) = 7)); – Falkor

+0

@Falkor MS Access-Abfrage hinzugefügt –

2

Ein Verfahren verwendet group by und having:

select textid 
from t 
where keywordid in (4, 7) 
group by textid 
having count(*) = 2; 

Verwenden count(distinct keywordid) wenn die Tabelle Duplikate haben.

Verwandte Themen