2016-03-21 5 views
0

Speicherung Ich versuche, eine Abfrage auf Daten SE zu erstellen, und bisher habe ich den folgenden Code:Daten SE/SQL Query - alle Spalten zurück, nicht nur zuletzt gewählt, wenn in den Variablen

DECLARE @ParentId int; 
DECLARE @AnswerId int; 

SELECT @ParentId = ParentId, @AnswerId = Id FROM Posts 
WHERE 
    OwnerUserId = 5620297 
AND 
    PostTypeId = 2; 

SELECT * FROM Posts 
WHERE 
    Id = @ParentId 
AND 
    AcceptedAnswerId != @AnswerId 

Grundsätzlich , die Abfrage sollte eine Frage zurückgeben, die eine Antwort von mir hat, jedoch wurde die Antwort von jemand anderem akzeptiert.

Die obige Abfrage funktioniert, überprüft jedoch nur die letzte Frage/Antwort. Wie kann ich dies ändern, um alle Fragen, die ich beantwortet habe, zu überprüfen und zurückzugeben?

Antwort

1

sollten Sie Ihre Tabellen JOIN:

SELECT * 
FROM Posts P1 
INNER JOIN (SELECT ParentId, Id 
      FROM Posts 
      WHERE OwnerUserId = 5620297 
      AND PostTypeId = 2) P2 
    ON P1.Id = P2.ParentId 
    AND P1.AcceptedAnswerId <> P2.Id; 
Verwandte Themen