【问题标题】:sql: join and viewsql:加入和查看
【发布时间】:2014-03-19 13:24:05
【问题描述】:

我是否使用多个表之间的连接来公开视图

我有一个代表酒店列表的主表

Hotels( id_hotel, name,address, website)

然后我有另一个表格,代表酒店的坐标

hotel_coordinates(id_hotel,latitude,longidute)

在表格的另一端,代表与酒店相关的图片:

hotel_images(hotel_id,image)

第一个表包含和hotels一样多的记录,即如果表中有100家酒店就有100条记录

第二个表包含可变数量的记录,这个数量取决于他输入酒店坐标的用户,例如可能有50条记录。每条记录都由 id_hotel 唯一标识

取而代之的是第三个表,因为第二个表可以有可变数量的记录作为已上传照片的函数,否则此表对于每个 id_hotel 可以有多个记录作为照片的函数,即,例如,

第一家酒店有 2 张照片已上传,这 2 条记录:

     id_hotel  imageSize 1    imageSize2      imageSize3
      1        image1.jpeg     null            null
      1        image2          image3.jpeg     null

我想创建一个必须有 100 条记录的视图,因为 100 是酒店的编号,那么每个字段都必须适当设置(例如:如果有 image1 则必须赞赏,但如果有 foto_1字段必须设置为 null) 。视图的列将是:

id_hotel;姓名;地址;网站;纬度;经度;照片_1;照片_2; fphoto_3;

如何使用联接来获得显示 100 条记录的视图?并设置为null或取值经纬度fhoto_1 fhoto_2 fhoto_3?

【问题讨论】:

  • 考虑从表格和视图的预期结果集中提供一些示例数据。
  • 你可能只需要一个左连接
  • 您使用的是哪个 DBMS?后格雷斯?甲骨文?您正在寻找一个名为“pivot”的功能,但它高度依赖于 DBMS。

标签: sql select join view


【解决方案1】:

我怀疑这样设置可能会更好......

Hotel
---------
(PK) Id
Name
Address
Website

HotelLocation
--------------
(PK) Id
(FK) HotelId
Longitude
Latitude

Photo
-------
(PK) Id
Photo

HotelPhotos
------------
(PK) Id
(FK) HotelId
(FK) PhotoId

您可以将纬度和经度放在 Hotel 表中以使其更容易,并在创建表时将字段设置为空...就像以下设置一样。

Hotel
---------
(PK) Id
Name
Address
Website
Latitude
Longitude

Photo
-------
(PK) Id
Photo

HotelPhotos
------------
(PK) Id
(FK) HotelId
(FK) PhotoId

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-07
    • 1970-01-01
    • 2020-01-02
    • 2020-05-20
    • 2012-09-01
    • 1970-01-01
    相关资源
    最近更新 更多