Aufteilen von Up/Downvotes eines Benutzers in drei Gruppen.

Robert Zenz

Top Contributor
Ich brauche mal kurz Starthilfe weil ich gerade irgendwie schwammig im Kopf bin. Nehmen wir mal an ich habe eine Tabelle welche Up/Downvotes zu, greifen wir das jetzt einfach mal aus der Luft und sagen "Benutzer", hat. Also die Tabelle hat drei Spalten:

1. Ziel-Benutzer-ID
2. Quell-Benutzer-ID
3. Typ (UP/DOWN)

Wenn ich jetzt herausfinden will wieviele Up/Downvotes ein Benutzer hat geht das relativ simpel:

SQL:
select
	count(*) as COUNT,
	TYPE,
from
	VOTES
where
    TARGET_USER_ID = 70879
group by
	TYPE;

Das gibt mir zwei Zeilen mit den jeweiligen Votes fuer rauf/runter. Jetzt will ich das ganze aber etwas komplexer gestalten, und zwar will ich anhand des aktuellen Benutzers die Votes in drei Gruppen aufteilen, Neutral, Vertrauenswuerdig, Misstraut. Dies basiert darauf ob der aktuelle Benutzer, also derjenige welcher die Anfrage stellt, auf die Benutzer gevotet hat welche Votes zum Ziel-Benutzer abgegeben haben. Ein Beispiel, wir haben den Benutzer "Zielwasser" dessen Daten so aussehen:

Code:
 TARGET_USER_ID | SOURCE_USER_ID | Typ  |
----------------|----------------|------|
 Zielwasser     | HeiniX         | UP   |
 Zielwasser     | HerrY          | DOWN |
 Zielwasser     | FrauZ          | UP   |

So, jetzt habe ich auf zwei dieser Benutzer ebenfalls gevotet, also die gesamte Tabelle sieht so aus:

Code:
 TARGET_USER_ID | SOURCE_USER_ID | Typ  |
----------------|----------------|------|
 Zielwasser     | HeiniX         | UP   |
 Zielwasser     | HerrY          | DOWN |
 Zielwasser     | FrauZ          | UP   |
 HeiniX         | Ich            | UP   |
 HerrY          | Ich            | DOWN |

Und jetzt haette ich gerne dass ich fuer "Zielwasser" folgende Aufstellung bekomme basierend darauf wie ich die votenden Benutzer bewertet habe:

Code:
Neutral Up: 1
Neutral Down: 0
Vetraut Up: 1
Vertraut Down: 0
Misstraut Up: 0
Misstraut Down: 1

Das klingt fuer mich nach einem recht einfachen Self-Join:

Code:
 TARGET_USER_ID | SOURCE_USER_ID | Typ  | ICH_VOTE_TYP |
----------------|----------------|------|--------------|
 Zielwasser     | HeiniX         | UP   | UP           |
 Zielwasser     | HerrY          | DOWN | DOWN         |
 Zielwasser     | FrauZ          | UP   | null         |

Aber da habert es bereits ein wenig bei mir im Kopf. Weil dann muesste ich das Join bereits auf den abfragenden Benutzer einschraenken. Am liebsten waere mir wenn ich das in einer View loesen koennte die ich dann Abfrage mit einer einfachen Bedingung, aber ich werde das Gefuehl nicht los dass das doch zu komplex dafuer ist.

Hat da jemand eine Idee?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
OnDemand Daten auf mehrere Tabellen aufteilen oder Spalten nutzen Datenbankprogrammierung 2
Rudolf Serialisierung, FileOutputStream aufteilen Datenbankprogrammierung 7
G Funktionen/Arbeitsschritte über Menü sinnvoll aufteilen Datenbankprogrammierung 3
H Oracle Resize eines Images in Java und Rückgabe des Image als BLOB an die Oracle Datebank Datenbankprogrammierung 14
damike84 Hibernate: persistieren eines Graphen Datenbankprogrammierung 2
G Laufzeit eines Algorithmus mittels Big Theta bestimmen Datenbankprogrammierung 5
G ID zuweisung eines TerminKalenders (mehrere Kalender) Datenbankprogrammierung 8
D Hibernate: Zustand eines Objekts erkennen? Datenbankprogrammierung 0
S HSQLDB Verbieten eines update auf eine bestimmte reihe Datenbankprogrammierung 4
J Datenbankeintag eines Warenkorbes funktioniert nicht Datenbankprogrammierung 4
H MySQL Werte eines Datensatzes in einen anderen kopieren Datenbankprogrammierung 2
M [Hibernate]Abgleich eines lokalen Objekts mit dem Zustand aus der Datenbank. Datenbankprogrammierung 3
N Problem bei Erstellung eines Index Datenbankprogrammierung 12
G PostgreSQL Postgre: Passwort eines Benutzers ändern Datenbankprogrammierung 3
D Anzeige wärend des Ausführens eines Statements Datenbankprogrammierung 13
N executeUpdate "innerhalb" eines Resultsets Datenbankprogrammierung 14
S Select eines bestimmten Datensatzes Datenbankprogrammierung 4
J Kopieren eines Datensatzes Datenbankprogrammierung 4
R Effiziente Java-Methode zum finden eines freien PK Datenbankprogrammierung 7
M Zugriff auf eine Access-Datenbank innerhalb eines jar-Files Datenbankprogrammierung 7
brainray Bei MySQL alle Datenbanken eines Servers abfragen Datenbankprogrammierung 3
1 User die Rechte eines Datenbankerstellers zuweisen? Datenbankprogrammierung 3
X SQL Abfrage für Ähnlichkeit eines Strings Datenbankprogrammierung 2
B SQL Abfrage. Nur den ersten eines Blocks Datenbankprogrammierung 2
M Passwort eines Technischen Users hinterlegen Datenbankprogrammierung 6
A JPA: Zweite Instanz eines Entitätsobjekts Datenbankprogrammierung 3
M Konvertierung eines Ojects to String Datenbankprogrammierung 3
T Datenbanknamen eines Datenbankservers auslesen Datenbankprogrammierung 9
J Größe eines ResultSets Datenbankprogrammierung 12
G Problem beim Schreiben eines Dateipfads in MySQL-DB Datenbankprogrammierung 9
G Löschen eines Eintrages verbunden mit JList Datenbankprogrammierung 5
F Filtern innerhalb eines Resultset Datenbankprogrammierung 12
W Anzahl der Spalten eines ResultSets bestimmen Datenbankprogrammierung 5
F die DN eines LDAP verzeichnisses abfragen Datenbankprogrammierung 2
B Laden eines JDBC Treiber. Datenbankprogrammierung 7
N Struktur eines Datenbankinterface? Datenbankprogrammierung 7
P Wirkliche Zeilenanzahl eines ResultSets ermitteln Datenbankprogrammierung 22
K frage zum ausführen eines INSERT statements Datenbankprogrammierung 16
K errechnen eines mittelwertes vom jdbc rSet Datenbankprogrammierung 4
M Abfrage trennt Ergbnis eines Atrributes nach den Leerzeichen Datenbankprogrammierung 4
F Abfrage eines DB Feldes aus einer mySQL Datenbank Datenbankprogrammierung 2
K Datenbank eines Forums nutzen Datenbankprogrammierung 11
J Alle Spalten und Zeilen eines ResultSets ausgeben ? Datenbankprogrammierung 2
B Zeilenzahl eines ResultSet ermitteln Datenbankprogrammierung 5

Ähnliche Java Themen

Neue Themen


Oben