简体   繁体   English

SQL查询与一对多关系的多个表联接

[英]SQL Query join with more than one table with relation one-to-many

I have following tables: 我有以下表格:

tbl_destination tbl_destination

id_destination INT PRIMARY
destination_name VARCHAR(200)

tbl_destination_category tbl_destination_category

id_destination_category INT PRIMARY
id_destination INT
id_category INT

tbl_destination_activity tbl_destination_activity

id_destination_activity INT PRIMARY
id_destination INT
id_activity INT

tbl_category tbl_category

id_category INT PRIMARY
category_name VARCHAR(200)

tbl_activity tbl_activity

id_activity INT PRIMARY
activity_name VARCHAR(200)

I want to select destination data, with category and activity WHERE: 我想选择目标数据,其中包含类别和活动:

  • One destination can have many category (tbl_destination one-to-many tbl_destination_category) 一个目的地可以具有多个类别(tbl_destination一对多tbl_destination_category)
  • One destination can have many activity (tbl_destination one-to-many tbl_destination_activity) 一个目的地可以有许多活动(tbl_destination一对多tbl_destination_activity)

My expected output example: 我的预期输出示例:

--------------------------------------------------------------------------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -----------------
Destination name Category Activity 目标名称类别活动
--------------------------------------------------------------------------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -----------------
Mount Everest Mountain, nature Hiking, Trekking, Camping 珠穆朗玛峰山,自然徒步旅行,徒步旅行,露营



Is this possible to do in one single query? 这可以在一个查询中完成吗? or whats the most efficient query? 或最有效的查询是什么?

you would have more than one row per relationships, but your SQL is here: 每个关系将有多于一行,但是您的SQL在这里:

 select td.destination_name,  tc.category_name, ta.activity_name
 from tbl_destination td
 inner join tbl_destination_category tdc on tdc.id_destination = td.id_destination 
    iiner join tbl_destination_activity tda on tda.id_destination = td.id_destination 
    iiner join tbl_category tc on tc.id_category = tdc.id_category 
    inner join tbl_activity ta on ta.id_activity  = tda.id_activity 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM