MySQL,链接数据

时间:2011-05-25 13:27:39

标签: php mysql sql

快速的棕色狐狸跳过懒狗。

2 个答案:

答案 0 :(得分:2)

第一步是分离不同的实体:

  • 笔记本

这些是你的桌子。我们使用数字ID链接'他们(外键),因为它允许我们更改名称而不更改链接,因为使用固定大小实体的索引执行得更快。因此,我们得到表格的列,如下所示:

笔记本

  • laptopId
  • 品牌
  • manufacturerSerial
  • ...等 - 有关您要存储的笔记本电脑本身的信息
  • currentState (States.stateId的外键)

  • requestId(主键)
  • requestDate
  • performBy (People.personId的外键)
  • 笔记本电脑(laptops.laptopId的外键)
  • requestState (States.stateId的外键)
  • ...有关您要存储的活动的备注或w / e信息

  • personId(主键)
  • 的firstName
  • ...... etc

  • stateId(主键)
  • SHORTNAME
  • 评论(短名称的有用解释)

现在举例说明如何检索有用信息。连接部分有额外的缩进:

列出笔记本电脑的当前状态

SELECT l.*, s.shortName
FROM laptops l JOIN states s
    ON l.currentState = s.stateId

与上面相同,使用WHERE而不是JOIN

SELECT l.*, s.shortName
FROM laptops l, states s
    WHERE l.currentState = s.stateId

显示最近10个请求

SELECT l.laptopId, l.brand, r.*, p.firstName, p.surName, s.shortName
FROM requests r, laptops l, people p, states s
   WHERE r.performedBy = p.personId
   AND r.laptop = l.laptopId
   AND r.requestState = s.stateId
ORDER BY r.requestDate DESC
LIMIT 0,10

总而言之,一旦我们正确识别了不同的实体,我们就可以使用外键将它们链接在一起,并使用这些链接编译我们需要的信息,并从不同的表中选择合适的列。

答案 1 :(得分:1)

如果您需要解释有什么加入以及它们有何不同 - the creator of SO has published a great article(最近被Sitepoint无耻地复制了),这应该可以让您了解它们。