2016-03-20 8 views
-2

Hier habe ich nun in der from Klausel Abschnitt verwendeten Verbindungs ​​...Verbindungsabschnitt in der From-Klausel

select course_id, semester, year, sec_id, avg (tot_cred) 
from takes natural join student 
where year = 2009 
group by course_id, semester, year, sec_id 
having count (ID) >= 2 

diese sql, meine Frage, Abfrage richtig? Wenn ja, warum? Oder wenn nicht warum? Vielen Dank.

+0

Richtig für was? wähle * aus a ist korrekt, hängt davon ab, was du erreichen willst! – sagi

Antwort

2

Ihre Anfrage ist technisch korrekt. Ich rate Ihnen jedoch dringend, niemals natural join zu verwenden. Es ist ein Fehler, der darauf wartet, zu passieren. Warum? Es verwendet die Namen - und nur die Namen - von Spalten in den zugrunde liegenden Tabellen. Es verwendet nicht einmal deklarierte Fremdschlüsselbeziehungen.

Verwenden Sie stattdessen eine explizite on oder using Klausel:

select courseid, semester, year, secid, avg(totcred) 
from takes t join 
    student s 
    using (studentid) 
where year = 2009 
group by courseid, semester, year, secid 
having count(*) >= 2; 

auch:

  • Ich gehe davon aus, dass die Räume in "Kurs-ID", "sec-ID" und "tot cred" sind einfach Tippfehler.
  • Verwenden Sie Tabellenaliase.
  • Qualifizieren Sie die Spaltennamen - das heißt, aus welcher Tabelle sie kommen.
Verwandte Themen