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的一行)。这是你想要的吗?向我们展示您希望在请求中得到的结果。我编辑了我的帖子,