SQL从3个表中获取数据

时间:2015-03-24 12:23:14

标签: sql oracle

我需要编写一个sql查询来通过连接表来显示wing_name,sister_name和nurse_name。

SELECT WING.WING_NAME, SISTER.SISTER_NAME, NURSE.NURSE_NAME
  FROM NURSE
      JOIN SISTERNURSE ON NURSE.NURSE_ID = SISTERNURSE.NURSE_ID
      JOIN SISTER ON SISTER.SISTER_ID = SISTERNURSE.SISTER_ID
      JOIN WING ON WING.SISTER_ID = SISTER.SISTER_ID
WHERE WING.WING_NAME = '*';

有人能看出这段代码有什么问题吗?

我需要从Nurse表中提取Nurse_name,该表通过外键Sister_ID链接到另一个名为Sister的表,然后将该表链接到另一个名为Wing的表,该表具有外键Sister_ID。 SisterNurse只是一个包含外键Nurse_id和Sister_id的桥接表。

我在wing_name中有四个值。我会把WING.WING_NAME =' SPARROW',' LORIKEET',' MACAW',' KINGFISHER&#39 ;; ?

表格结构:

姐妹表 - Sister_id(主键),sister_name,sister_surname,sister_contactnumber,sister_salary

Wing Table - wing_id(主键),wing_name,number_of_rooms,sister_id(外键)

护士表 - Nurse_id(主键),护士名称,护士姓名,护士_护士号码,护士_salary

SisterNurse表 - SisterNurse_ID(主键),Sister_id(外键),Nurse_id(外键)

2 个答案:

答案 0 :(得分:1)

正如您对下面的另一个答案所评论的那样;我在In Operator中添加了这些名称。

请检查输出:

 SELECT WING.WING_NAME, SISTER.SISTER_NAME, NURSE.NURSE_NAME
      FROM NURSE
          JOIN SISTERNURSE ON NURSE.NURSE_ID = SISTERNURSE.NURSE_ID
          JOIN SISTER ON SISTER.SISTER_ID = SISTERNURSE.SISTER_ID
          JOIN WING ON WING.SISTER_ID = SISTER.SISTER_ID
    WHERE WING.WING_NAME in ('SPARROW', 'LORIKEET', 'MACAW', 'KINGFISHER');

答案 1 :(得分:0)

对wing_name使用正确的值,所有其他sql查询似乎都可以。为wing_name输入正确的值并执行查询。检查它是否仍然给出相同的错误。