mysql - 在 mysql 查询中使用来自 5 个不同表的数据

标签 mysql

我需要一些关于执行多个连接的帮助,我不太擅长这件事,需要一种方法来让它工作。

有5个表有数据,需要从每个表中获取数据输出。有一个人、访问、中心、日期和已见表。访问表具有用于从其他表获取数据的 ID。我想使用此表来获取此人的状态,查看他们访问的日期、在哪个中心、他们的姓名以及谁见过他们。 (我希望这是有道理的)。

输出应该如下所示:

> Person FirstName
> Person LastName
> Seen By
> Date
> Center
> Status

编辑//这是我想看到的模型mockup

我已经阅读了数据透视表,但不想使用它。我在这里创建了一个 SQL fiddle : http://www.sqlfiddle.com/#!2/d19d2c

编辑// 我已经成功编写了一半的查询,但我怀疑它是否有效,但我想它是一个起点。

SELECT d.date
     , p.Firstname
     , p.Lastname
     , c.centername
     , v.status
     , s.FirstName
     , s.LastName
  FROM visit v 
  LEFT 
  JOIN date d 
    ON v.dateID = d.id 
  LEFT 
  JOIN centerName c 
    ON c.centerID = c.id

谢谢!

最佳答案

从您的表结构来看,您似乎想要这样的查询:

SELECT 
  d.date, 
  CONCAT_WS(' ', p.Firstname ,p.Lastname) AS "Person", 
  v.status,
  CONCAT_WS(' ', s.FirstName, s.LastName) AS "Seenby",
  c.centername

FROM visit v 
JOIN person p ON v.PersonID = p.ID
JOIN seenby s ON v.seenbyID = s.ID
LEFT JOIN date d ON v.dateID = d.id 
LEFT JOIN center c ON v.centerID = c.id

最后两个连接可能应该是普通的内连接而不是左连接,请酌情调整。

CONCAT_WS()函数使用第一个参数的值作为分隔符(本例中为空格)将其参数连接成一个字符串。

Sample SQL Fiddle

关于mysql - 在 mysql 查询中使用来自 5 个不同表的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27342550/

相关文章:

mysql - 如何使用 slick 和 mariadb 将 Array[Byte] 插入二进制数据类型列?

mysql - org.springframework.orm.jpa.SharedEntityManagerCreator 的代理 :invoke:289

php - MySQL WHERE 结果基于先前的 WHERE 子句

php - Magento - 无法重新索引产品价格 - 外键约束失败

sql - SQL如何将垂直数据转化为水平数据?

MYSQL - 在单个查询中查询多个用户的评分平均值

javascript - 删除并重定向到同一页面

php - MySQL查询无法读取PHP变量

mysql - 根据同一行中的另一个 DISTINCT 列获取 DISTINCT 列

php - 不显示错误信息