2010-12-03 10 views
1

Ich habe nie "if-else" oder "case" in einer SQL-Abfrage verwendet, aber ich denke, ich brauche diese Zeit. Ich habe eine Tabelle, deren Daten stellt so etwas wie ein Wettbewerb zwischen zwei Benutzern:MySQL: überprüfen, ob Daten in Abfrage vorhanden sind

//properties of "competition-table 
    int competitionId 
    int userId_Contrahent1 
    int userId_Contrahent2 
    otherdata.... 

Nutzer, die eine oder andere contrahent innerhalb dieses Wettbewerbs abstimmen; eine Abstimmung ist wie so dargestellt:

//properties of vote-table 
    int voteId 
    int competitionId 
    int userId_Voter 
    int userId_Winner // the user for which this vote counts 
    otherdata.... 

Offensichtlich kann jeder gegebenen Benutzer in meiner Webapplikation nur einmal stimmen für einen bestimmten Wettbewerb. Wenn ich also nach dem Wettbewerb frage, möchte ich auch die Information haben, wenn der currentUser (der die aktuelle Sitzung besitzt) bereits für diesen Wettbewerb gestimmt hat. Neben all den anderen Eigenschaften des Wettbewerbs möchte ich noch einen zusätzlichen haben, der einen Schlüssel wie "abgestimmt" und einen Wert wie "ja" oder "nein" hat. So sollte meine Select-Anweisung wie folgt aussehen ich denke:

SELECT competition.*, 
If EXISTS ( 
    SELECT * FROM vote WHERE userId_Voter = $currentUserId 
    AND competitionId = competition.competitionId) 
    ...do something 
FROM competition; 

Wie kann ich tun, dass genau in MySQL?

+0

um eine neue Spalte zu erstellen, führen Sie ALTER TABLE Tabellenname ADD Gruppenname tinyint(); – Breezer

+0

@Breezer: Ich kann nicht für jeden vorhandenen Benutzer in meiner Webapp eine weitere Spalte zum Wettkampftisch hinzufügen !!!! –

Antwort

3
SELECT c.*, 
      IF(v.competitionId IS NOT NULL, 'voted', 'not voted') AS `verdict` 
    FROM competition c 
LEFT JOIN vote v ON v.competitionId = c.competitionId 
       AND v.userId_Voter = $currentUserId 
+0

Wenn der Wert "abgestimmt" oder "nicht gewählt" ist, was ist der Schlüssel der Immobilie? –

+0

@paskster: aktualisierte Abfrage ein wenig – zerkms

Verwandte Themen