gpt4 book ai didi

php - "favorites"实体的Mysql设计

转载 作者:行者123 更新时间:2023-11-29 22:46:15 27 4
gpt4 key购买 nike

我有一个使用 MySQL 作为存储的 PHP 应用程序。该应用程序提供多种服务(例如游轮和酒店),我想实现收藏夹。

我不知道如何让它变得简单。最愚蠢的方法是为每个服务创建两个不同的收藏夹表,或者将它们全部放入表中,但使用第二种方法我不确定如何在一个查询中加入其他表。

例如:用户 A 有两个最爱:1 个酒店和 1 个游轮,因此查询将类似于:

SELECT id..ect FROM favorites 
LEFT JOIN hotels on ? = ?
LEFT JOIN cruises on ? = ?
WHERE user_id = ? AND ( this is very important ) language_id = 1

表游轮和酒店使用自动增量主键作为 id,因此您可以假设,在这种情况下 id 不会相关。

编辑:抱歉,我不太准确。用户将能够选择酒店、游轮等作为最爱,并能够在以后进行预订。我想要知道哪一种是最好的方法,是否可以通过一个查询从数据库中选择它们

最佳答案

您最喜欢的表必须具有用户 ID、源表(邮轮或酒店的代码)以及邮轮或酒店表的 ID。

然后用并集选择。

Select Id, 'H', hotel_name,... 
From favorite
Join hotel on hotel.id = favorite.id and favorite.rectype = 'H'
Where userID =?
Union
Select Id, 'C', cruise_name,...
From favorite
Join cruise on cruise.id = favorite.id and favorite.rectype = 'C'
Where userID =?

使用联合时,列的数量、类型和名称必须与上方和下方匹配。如果需要,您显然可以在其中一个或另一个中留一些空。

关于php - "favorites"实体的Mysql设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29107356/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com