2011-05-02 3 views
0
SELECT Student.S_ID, COUNT(*) AS **Final_Exam_Level** 
FROM Student, Exams, Exam_Allocation 
WHERE (Student.S_ID)=Exam_Allocation.S_ID 
    And ((Exams.Exam_ID)=Exam_Allocation.Exam_ID) 
    And (Exams.Date_Taken) <= #12/31/2010# 
GROUP BY Student.S_ID, Student.Course_Level 
ORDER BY Student.S_ID; 

SELECT Student.S_ID AS S_ID, Student.First_Name AS First_Name, Student.Surname AS Surname, MAX(New_Models.Date_Issued) AS Last_Course_Date, MAX(New_Models.Issue) AS Last_Issue, MAX(New_Models.Model_ID) AS Last_Model_ID, Student.Course_Level AS No_Training_Courses 
FROM New_Models, New_Models_Allocation, Student 
WHERE New_Models.Model_ID=New_models_Allocation.Model_ID And Student.S_ID=New_Models_Allocation.S_ID 
GROUP BY Student.S_ID, Student.Course_Level, First_Name, Surname 
ORDER BY MAX(New_Models.Model_ID) DESC; 

Comment puis-je ajouter Final_Exam_Level dans la deuxième requête?combiner deux requêtes SQL

Final_Exam_Level compte le nombre d'examens que chaque étudiant a fait. Exam_Allocation a deux clés étrangères, S_ID et Exam_ID

select Query_New_Models.*, Query_Exam.Final_Exam_Level 
FROM (SELECT Student.S_ID AS S_ID, Student.First_Name AS First_Name, Student.Surname AS Surname, MAX(New_Models.Date_Issued) AS Last_Course_Date, MAX(New_Models.Issue) AS Last_Issue, MAX(New_Models.Model_ID) AS Last_Model_ID, Student.Course_Level AS No_Training_Courses 
FROM New_Models, New_Models_Allocation, Student 
WHERE New_Models.Model_ID=New_models_Allocation.Model_ID And Student.S_ID=New_Models_Allocation.S_ID 
GROUP BY Student.S_ID, Student.Course_Level 
ORDER BY MAX(New_Models.Model_ID) DESC)    INNER JOIN   (SELECT  Student.S_ID, COUNT(*) AS Final_Exam_Level 
FROM Student, Exams, Exam_Allocation 
WHERE (Student.S_ID)=Exam_Allocation.S_ID 
And ((Exams.Exam_ID)=Exam_Allocation.Exam_ID) 
And (Exams.Date_Taken)<=#12/31/2010# 
GROUP BY Student.S_ID, Student.Course_Level 
ORDER BY Student.S_ID 
) ON Query_Exam.S_ID = Query_New_Models.S_ID ; 
+1

Désolé, mais ces requêtes renvoient un nombre (très) différent de colonnes. .. alors comment pouvez-vous les fusionner? – Marco

+0

Il pourrait être plus facile si vous indiquez quel objectif vous essayez d'atteindre, autre que "combiner ces deux requêtes". À quoi devrait ressembler l'ensemble de données résultant? – FrustratedWithFormsDesigner

+0

Je veux ajouter une colonne à l'autre. Ils ont le même nombre ou des enregistrements cependant. Ils montrent tous les deux des détails sur le technicien – Qatrelnada

Répondre

2

Il suffit de tourner les deux en sous-requêtes d'une requête plus

select Second.*, First.Final_Exam_Level 
    from (Your Second Query Here) Second 
      inner join 
     (Your First Query Here) First on First.Technician_ID = Second.Technician_ID 
+0

Je ne pense pas qu'ils ont tous deux besoin d'être des tables dérivées, vous devriez être en mesure de rejoindre la 1ère requête (en tant que table dérivée) directement au 2ème –

+0

J'ai essayé d'inclure les champs du premier dans le deuxième plus tôt, mais il a montré de mauvais résultats. – Qatrelnada

+0

Pouvez-vous s'il vous plaît vérifier le SQL que j'ai ajouté à mon message à partir de ce que j'ai compris à propos de ce que vous avez dit. Désolé, mais je ne sais pas grand-chose sur SQL. J'apprécie beaucoup votre aide – Qatrelnada