2016-08-02 5 views
0

Ich möchte wissen, wie man Abfrage schreibt, um genaue Werte von Where-Klausel zu holen. Zum Beispiel gibt es eine Tabelle, die in einer solchen Art und Weise Daten nachSQL Abfrage, um genaue Werte zu holen

USER ACCESS 
A  DEFAULT 
A  EVERYONE 
B  DEFAULT 
B  EVERYONE 
B  WEBACCESS 

SQL-Abfrage geschrieben werden, dass die Ausgabe in nur USER A bringt hat sollte. Ich habe versucht, Gruppe zu verwenden und die Anzahl der Datensätze zu überprüfen, aber es brachte mir beide Benutzer.

Vielen Dank im Voraus!

+3

Bearbeiten Sie Ihre Frage und zeigen Sie das Tabellenlayout. –

+0

Okay, jetzt sind die Tabellendaten sinnvoll. Nach welchen Kriterien entscheidet Ihre Select-Anweisung, dass nur Benutzer A angezeigt wird? Weil es für Benutzer A genau zwei Datensätze gibt? Oder weil für Benutzer A kein Eintrag 'WEBACCESS' vorhanden ist? Oder welche Regel soll man sonst anwenden? –

+0

Es sollte Benutzer einbringen, die Zugriff sowohl auf EVERYONE als auch auf DEFAULT ONLY haben, was in diesem Fall Benutzer A ist, da Benutzer B einen zusätzlichen Zugriff hat, der WEBACCESS ist, so dass Benutzer B nicht in das Ergebnis kommen sollte – max092012

Antwort

0

Ich vermute, dass Sie die Informationen in verschiedenen Zeilen speichern, und Sie versuchen, die Ergebnisse für jeden Benutzer "zusammenführen". Wenn ja, können Sie etwas tun:

select userid 
from t 
group by userid 
having sum(case when access = 'EVERYONE' then 1 else 0 end) > 0 and 
     sum(case when access = 'DEFAULT' then 1 else 0 end) > 0 and 
     count(distinct access) = 2; 
Verwandte Themen