2017-12-10 2 views
-1

Ich musste zwei Tabellen erstellen (Studenten und Noten) und dann die Werte einfügen. Diese sind die queries-Wie schreibe ich MySQL-Abfragen?

CREATE TABLE students (student_id INT(3) NOT NULL PRIMARY KEY AUTO_ INCREMENT, 
firstname VARCHAR(30) NOT NULL, 
lastname VARCHAR(50) NOT NULL); 

CREATE TABLE grades (student_id INT (3) NOT NULL PRIMARY KEY AUTO_ 
INCREMENT, 
gpa DOUBLE);' 

INSERT INTO students (student_id, firstname, lastname) VALUES (‘123’, 
‘Some’, ‘One’); 
INSERT INTO students (student_id, firstname,lastname) VALUES (‘125’, 
‘Another’, ‘One’); 
INSERT INTO students (student_id, firstname,lastname) VALUES (‘167’, ‘Good’, 
‘Student’); 

INSERT INTO grades (student_id, gpa) VALUES (‘123’, ‘2.34); 
INSERT INTO grades (student_id, gpa) VALUES (‘125’, ‘3.21’); 
INSERT INTO grades (student_id, gpa) VALUES (‘167’, ‘3.86’); 

So, jetzt, wenn ich die SQL-SELECT-Abfrage verwenden, um bestimmte Zeilen (GPA über 3,5) zu finden und benutzen müssen die LEFT und die CONCAT Funktion, um mir den Namen Gute Schüler, genau wie mache ich das? Wie verwende ich die Funktionen LEFT und CONCAT um Zeilen zu generieren?

+2

Sie müssen google 'Select-Anweisung' –

+1

Ich verstehe nicht den Punkt der Noten Tabelle. Warum speicherst du das gpa nicht im Schülertisch? – Strawberry

Antwort

2

Ich nehme an, dass Sie mit "links" einen linken Join gemeint haben, aber das wird hier nicht wirklich passen - jeder Student muss einen GPA haben, und wenn aus irgendeinem Grund ein bestimmter Student das nicht tut per definitionem kann er keinen GPA von etwa 3,5 haben. Um eine lange Geschichte kurz zu machen - eine innere Verknüpfung wäre viel besser geeignet:

SELECT CONCAT_WS(' ', firstname, lastname) 
FROM students s 
JOIN grades g ON s.student_id = g.student_id 
WHERE gpa > 3.5 
1

Obwohl die Option von Mureinik legit ist, und korrigieren Sie brauchen kein Links beitreten, können Sie tatsächlich denken sie in umkehren. Nicht mit dem Schüler, beginnt aber mit den Noten beginnen ... Dies ist eher eine mentale Wahrnehmung ist, zeigt aber, wie die gleichen Ergebnisse mit leicht unterschiedlichen Abfragen

select 
     concat_ws(' ', s.firstname, s.lastname) studentName, 
     g.gpa 
    from 
     grades g 
     join students s 
      on g.student_id = s.student_id 
    where 
     g.gpa > 3.5 

Auch am besten erhalten werden zu qualifizieren Ihrem Tabelle (oder Alias ​​'g' und 's' in diesem Fall) mit den Spaltennamenreferenzen, um Mehrdeutigkeit für sich selbst oder andere zu vermeiden, um in der Zukunft auf Abfragen zurückzuschauen.