gpt4 book ai didi

php - MySQL 高效 SELECT 查询

转载 作者:行者123 更新时间:2023-11-29 22:52:08 24 4
gpt4 key购买 nike

我不是数据库专业人士,但目前正在处理一个查询(PHP->MySQL):

我有 3 张 table :

“项目”:ID、名称、链接

“ItemsToUsers”:id、item_id、user_id

“用户”:ID、电子邮件

每个“元素”可用性都会提交给定期更改,我会通过某种算法实时检查这些更改。

我的目标是

1) 选择所有项目并即时检查它们是否可用

2) 如果项目可用,请通过电子邮件通知正在监控该项目的用户。为此,我需要从“ItemsToUsers”中选择用户,然后从“用户”表中获取他们的电子邮件。

我知道如何以简单的方式做到这一点,但我觉得我会遇到很多查询。 (每个用户的单独选择...)

有没有一种方法可以更有效地做到这一点:在一个查询中或通过更改算法?感谢您的宝贵时间!

最佳答案

没有足够的信息来确定商品的可用性。这严重阻碍了查询第 2 项的能力。

也就是说,假设我们向 Items 表中添加一个“可用”列,该列的 tinyint 为 0 表示不可用,1 表示可用。

那么,获取观看可用项目的人的所有电子邮件地址的查询是:

 SELECT u.email FROM Users AS u JOIN ItemsToUsers AS k ON k.user_id = u.id JOIN Items AS i on i.id = k.item_id WHERE i.available = 1;

或者,您可以使用子查询和 IN。

假设您有一个名为 Availability 的不同表,其中包含 id、item_id 和 available 列,该表也是一个 tinyint,其中 1 表示可用,0 表示不可用。

SELECT u.email FROM Users AS u JOIN ItemsToUsers AS k ON k.user_id = u.id WHERE k.item_id IN (SELECT a.item_id FROM Availability AS a WHERE a.available = 1);

同样,如果不知道如何获取可用产品列表,就不可能优化检索电子邮件地址列表的查询。

关于php - MySQL 高效 SELECT 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28863756/

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