Mysql 如何连接多个表
这是我的数据库:Mysql 如何连接多个表,mysql,sql,Mysql,Sql,这是我的数据库: contact\u photo和contact\u video是两个“join”表。他们有一个外键至我的联系人表和一个外键至照片/视频表 是否有一种方法可以通过一个查询检索这5个表中的所有记录,从my_contact.id的值开始 我知道如何加入,例如,我的联系人,联系人照片,以及照片, 但我不知道如何将这5张表连接在一起 我试过: query = "SELECT * " + "FROM my_contact m " + "INN
contact\u photo
和contact\u video
是两个“join”表。他们有一个外键至我的联系人
表和一个外键至照片/视频
表
是否有一种方法可以通过一个查询检索这5个表中的所有记录,从my_contact.id
的值开始
我知道如何加入,例如,我的联系人
,联系人照片
,以及照片
,
但我不知道如何将这5张表连接在一起
我试过:
query = "SELECT * " +
"FROM my_contact m " +
"INNER JOIN contact_photo cp ON ( m._id = cp.id_contact ) " +
"INNER JOIN photo p ON ( cp.id_photo = p._id) " +
"INNER JOIN contact_video cv ON ( m._id = cv.id_contact ) " +
"INNER JOIN video v ON ( cv.id_video = v._id) ";
但是我没有记录,即使我的联系人
,联系人照片
和照片
有记录(联系人视频
和视频
都是空表)。我的逻辑有问题吗
我想得到的结果是这样的记录:
--------------------------------------------------------------------------
| my_contact._id | photo.id_photo_on_device | photo.uri |
--------------------------------------------------------------------------
| 1 | 23 | C:\PROGRAM|.... |
--------------------------------------------------------------------------
--------------------------------------------------------------------------
| my_contact._id | video.id_video_on_device | video.uri |
--------------------------------------------------------------------------
| 1 | 36 | C:\PROGRAM|.... |
--------------------------------------------------------------------------
实际上,看看我想要得到的记录,我的逻辑似乎有问题。我建议使用
union-all
查询。结构类似于此:
select c.uri
, c.i_contact_on_device
, other useful fields
from my_contact c join contact_photo cp on c._id = cp.id_contact
join photo p on p._id = cp.id_photo
union all
same general idea, but for videos
请注意,并非所有字段都有用。例如,即使您想要my_contact中的_id字段,也可能只需要一次。这就是为什么从连接表中选择字段可能是不必要的。使用
左连接
而不是内部连接
。我编辑了我的帖子,思考您的结果集应该是什么样子。当然,您可以直接加入,但随后您将获得所有照片和视频组合的记录(即,对于photo1和photo2以及video1和video2的联系人,您将获得photo1、video1、photo1、video2、photo2、video1和photo2、video2的一行)。这是你想要的吗?向我们展示您希望在请求中得到的结果。我编辑了我的帖子,