【问题标题】:Multiple level lookup field多级查找字段
【发布时间】:2019-08-20 02:00:40
【问题描述】:

我有三个表,国家、部门和城市,城市表包含部门表 PK 索引的外键,部门包含国家表 PK 索引的外键,例如:

国家/地区表记录

PK=1   |   NAME = France 

部门表记录

PK=1   |   NAME=Ile de France   |   COUNTRYKEY=1
PK=2   |   NAME=Bouches du Rhone   |   COUNTRYKEY=1

城市表记录

PK=1   |   NAME=Paris   |   DEPTKEY=1
PK=2   |   NAME=Marseille   |   DEPTKEY=2

所以,我想显示一个包含所有详细信息的城市表格,命名部门国家

我实际上使用查找字段来显示部门名称,但是还要以城市形式显示仅作为外键包含在部门表中的“国家”名称?我的意思是有没有办法显示查找字段的查找字段?作为初学者,将不胜感激详细的代码,谢谢大家

【问题讨论】:

  • 提示:JOIN。又是JOIN
  • 作为初学者,您真的需要找到更多关于使用 SQL 的教程,以及一般编写 SQL 查询。这是非常琐碎的事情。沿着询问如何使用汽车刹车的方式进行比较。是否使用外键甚至都没有关系。在 SQL 语句中连接其他表只是 SQL 的核心基础知识之一。

标签: sql delphi lookup master-detail


【解决方案1】:
    SELECT d.NAME AS Department_Name, ct.NAME as CITY, cn.NAME AS COUNTRY
    FROM DEPARTMENTS d
    LEFT JOIN CITIES ct ON d.PK = ct. DEPTKEY
    LEFT JOIN COUNTRIES ON d.COUNTRYKEY = cn.PK

您可能需要添加一个WHERE 子句,并且可能需要在末尾添加一个ORDER BY,但您没有表明这一点。

【讨论】:

  • 我只想显示整个 CITIES 表以及有关它的所有详细信息、CITY DEPARTMENT 和 COUNTRY 名称,所以我认为不需要 WHERE 子句,我会尝试你的代码
  • @AlvenCode 我觉得提到WHEREORDER BY 子句只是一种修辞,考虑到JOIN 是你需要的,同时它是SQL 的一个常见和基本部分和。这是讽刺。
  • 那么您将希望将 CITIES 表作为主要表,而不是像我上面所做的那样 DEPARTMENTS。但我认为我的回答应该为您指明正确的方向。
  • @JerryDodge:是的,我最后的评论是修辞,但不是讽刺。我真的很想帮助刚接触编程的人。但我同意你对 OP 的评论,他们需要一个教程。 ;)
  • 加入工作完美,谢谢,答案将被接受....请现在我有一个加入表,我想例如从中编辑一条记录并查看仅适用于城市表的更改我该如何继续?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-25
  • 2018-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多