Oracle

幫助加入 3 個表 Oracle XE 11g

  • April 15, 2016

我正在嘗試從下表中返回名字、姓氏、主題和標記:

SQL> desc 學生;
名稱空?類型
------------------------ -------- -------------------
STUDENT_NO VARCHAR2(10)
姓氏 VARCHAR2(20)
名字 VARCHAR2(20)
SQL> 描述模組;
名稱空?類型
------------------------ -------- -------------------
MODULE_CODE VARCHAR2(8)
MODULE_NAME VARCHAR2(20)
SQL> desc 標記;
名稱空?類型
------------------------ -------- -------------------
STUDENT_NO VARCHAR2(10)
MODULE_CODE VARCHAR2(8)
標記號碼(38)

我在 SQL*Plus 中嘗試了以下 SQL 查詢

SELECT DISTINCT FORENAME AS “First Name”,SURNAME,MODULE_NAME AS “Subject”,MARK
來自學生、模組、分數;

但這會顯示重複的條目。

以下根本行不通。

選擇 st.FORENAME 作為“名字”,st.SURNAME,mod.MODULE_NAME 作為“主題”
FROM STUDENTS st JOIN MODULES mod ON (st.STUDENT_NO = mod.STUDENT_NO);

我錯過了什麼嗎?也許是一個子查詢?請幫助,數據庫總菜鳥。

您使用的第一個查詢返回這三個表中行的笛卡爾積。詳情:加入

以下是連接三個表的簡單範例。

SQL> select * from student;

STUDENT_ID FIRSTNAME        LASTNAME
---------- -------------------- --------------------
    1 Will         Smith

SQL> select * from module;

MODULE_ID NAME
---------- --------------------
    1 Computing

SQL> select * from marks;

STUDENT_ID  MODULE_ID       MARK
---------- ---------- ----------
    1      1         40

SQL> 


SQL> select s.firstname, s.lastname, mo.name Module_Name, m.mark 
    from student s 
        join marks m on (s.student_id=m.student_id) 
        join module mo on (m.module_id=mo.module_id);

FIRSTNAME     LASTNAME     MODULE_NAME     MARK    
------------- ------------ --------------- --------
Will          Smith         Computing      40

SQL> 

引用自:https://dba.stackexchange.com/questions/135288