Ich habe ein SQL-Skript, das Zuweisungen auswählt, die ein Student zugewiesen wurde. Um herauszufinden, ob der Schüler seine Aufgabe abgeschlossen hat, verwende ich eine Unterabfrage. Sobald der Schüler eine Aufgabe beendet hat, sollte er in der Lage sein, an der nächsten zu arbeiten.SQL - Wie verhindert man die Verbindung von drei Abfragen in eine
Ich denke, ich kann dies tun, indem Sie die oberste 1 Zuweisung, die nicht abgeschlossen wurde (0 Wert) ausgewählt. Was ich mit einer zusätzlichen Abfrage der ersten Abfrage tun kann, aber dann würde ich eine dritte Abfrage benötigen, um diese Abfrage zusammenzufügen. Gibt es eine Möglichkeit, diese Auswahl der Top 1-Zuweisung, die einen Wert von 0 hat, mit 2 Abfragen oder weniger zu erreichen?
ersten Versuch
SELECT ag.group_id,
ag.title,
ac.collection_id,
ag.order,
ac.NAME,
ac.isactive,
(SELECT top 1 iscompleted
FROM student_completion
WHERE fk_collection_id = collection_id
AND fk_student_id like '404')
AS isCompleted,
FROM assignments AS ag
JOIN assignments_collection AS ac
ON ag.fk_collection_id = ac.collection_id
Order BY group_id
/*
SELECT TOP 1 isCompleted
(SELECT ag.group_id,
ag.title,
ac.collection_id,
ag.order,
ac.NAME,
ac.isactive,
(SELECT top 1 iscompleted
FROM student_completion
WHERE fk_collection_id = collection_id
AND fk_student_id like '404')
AS isCompleted,
FROM assignments AS ag
JOIN assignments_collection AS ac
ON ag.fk_collection_id = ac.collection_id
Order BY group_id)
Where isCompleted = 0
.........
*/
Daten
+----------+--------------+---------------+-------+----------------------+----------+-------------+
| group_id | title | collection_id | order | name | isactive | isCompleted |
+----------+--------------+---------------+-------+----------------------+----------+-------------+
| 1 | Assingment_1 | 5 | 0 | Welcome to Linux | 1 | 0 |
| 2 | Assingment_2 | 6 | 0 | Installation | 1 | 0 |
| 3 | Assingment_3 | 9 | 1 | Intro to Bash | 1 | 0 |
| 3 | Assingment_4 | 3 | 1 | Intro to Bash part 2 | 1 | 0 |
+----------+--------------+---------------+-------+----------------------+----------+-------------+
Daten erwartet
+----------+--------------+---------------+-------+----------------------+----------+-------------+-----------+
| group_id | title | collection_id | order | name | isactive | isCompleted | available |
+----------+--------------+---------------+-------+----------------------+----------+-------------+-----------+
| 1 | Assingment_1 | 5 | 0 | Welcome to Linux | 1 | 0 | 1 |
| 2 | Assingment_2 | 6 | 0 | Installation | 1 | 0 | 0 |
| 3 | Assingment_3 | 9 | 1 | Intro to Bash | 1 | 0 | 0 |
| 3 | Assingment_4 | 3 | 1 | Intro to Bash part 2 | 1 | 0 | 0 |
+----------+--------------+---------------+-------+----------------------+----------+-------------+-----------+
student_completion
+---------------+------------------+-------------+
| FK_studentKey | FK_collectionKey | isCompleted |
+---------------+------------------+-------------+
| 404 | 5 | 1 |
+---------------+------------------+-------------+
Aus welcher Tabelle stammen Ihre Beispieldaten? Wie ist die Struktur Ihrer anderen zwei Tabellen? Haben Sie auch Beispieldaten für sie? Die erwartete Ausgabe wäre ebenfalls hilfreich. –
Hier ist ein großartiger Ort, um zu beginnen. http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ –
Es sieht aus wie Sie die gewünschte Ausgabe gepostet? Sie müssen die Details der Tabellen angeben, wenn Sie Hilfe benötigen. Und seien Sie nicht überrascht, wenn wir Ihnen keine Antwort geben, da dies viele Hausaufgaben sieht. –