Ich bin ziemlich neu in SQL und Codierung im Allgemeinen.

Ich habe eine SQL-Abfrage, die gut funktioniert. Alles was ich jetzt machen möchte, ist, die Anzahl der Zeilen aus diesem Abfrageergebnis zurückzugeben.

Die aktuelle SQL-Abfrage lautet:

SELECT 
    Progress.UserID, Questions.[Question Location],
    Questions.[Correct Answer], Questions.[False Answer 1],
    Questions.[False Answer 2], Questions.[False Answer 3]
FROM
    Questions 
INNER JOIN
    Progress ON Questions.[QuestionID] = Progress.[QuestionID]
 WHERE 
    (((Progress.UserID) = 1) AND 
     ((Progress.Status) <> "Correct")
    );

Ich weiß, dass ich verwenden muss

SELECT COUNT(*)

... obwohl nicht ganz sicher, wie ich es in die Abfrage integriere.

Ich beabsichtige dann, OLEDB zu verwenden, um das Ergebnis an eine VB Windows Form App zurückzugeben.

Jede Hilfe wird sehr geschätzt.

Vielen Dank! Joe

0
Joe Jones 1 Jän. 2016 im 20:29

3 Antworten

Beste Antwort

Eine einfache Möglichkeit besteht darin, eine Unterabfrage zu verwenden:

select count(*)
from (<your query here>) as q;

In Ihrem Fall können Sie auch select wie folgt ändern:

select count(*)

Dies würde jedoch bei Aggregationsabfragen nicht funktionieren.

0
Gordon Linoff 1 Jän. 2016 im 17:31

Verwenden Sie eine einfache Unterabfrage, um alle Datensätze zu zählen. Unterabfragen müssen Aliassen haben (hier habe ich Ihre Unterabfrage 'Unterabfrage' benannt).

SELECT COUNT(*) 
FROM (
    SELECT Progress.UserID, Questions.[Question Location],Questions.[Correct Answer], Questions.[False Answer 1],
    Questions.[False Answer 2], Questions.[False Answer 3]
    FROM Questions 
    INNER JOIN Progress ON Questions.[QuestionID] = Progress.[QuestionID]
    WHERE (((Progress.UserID)=1) AND ((Progress.Status)<>"Correct"))
) AS subquery;
1
emily 1 Jän. 2016 im 18:23

Ein völlig anderer Ansatz als bei SQL-basierten Methoden besteht darin, die Zeilen zu zählen, sobald sie wieder in Ihrer Anwendung sind. Sie sagen, Sie verwenden VB, sodass Sie möglicherweise ein Dataset verwenden, um die Ergebnisse Ihrer Abfrage zu speichern. Wenn ja, dann brauchen Sie nur diesen Code:

dim rowcount as integer = mydataset.mytable.rows.count
0
peterG 1 Jän. 2016 im 20:29