gpt4 book ai didi

php - 如何编写此 mysql 连接查询,然后根据需要进行排序?

转载 作者:行者123 更新时间:2023-11-29 05:29:03 25 4
gpt4 key购买 nike

我有两个表“widgets”和“clicks”,两个表共享一个 ID 列。

我需要编写一个查询,通过 id 连接小部件和点击表,然后我需要按点击的顺序返回数据,所以点击次数最多的小部件首先返回,然后下线。

我至少尝试过将初始查询放在一起,但我仍然需要帮助:

       $query = "SELECT widgets.id AS w_id, 
clicks.id AS c_id,
widgets.manf_id AS w_manf,
widgets.name AS w_name,
widgets.widgetlink AS w_link,
widgets.type_id AS w_type_id,
widgets.image_url AS w_url,
clicks.clicks AS c_clicks
FROM widgets, clicks WHERE widgets.id = clicks.id ";

其他重要信息:

有些小部件可能没有任何点击,所以我需要从两个表中收集所有信息,然后按每个 id 的点击量排序。

回想起来,向小部件表添加点击列可能更容易,但我认为分离还有其他优势。

最佳答案

你想做的可以通过使用Joins来实现.您可以从两个表中SELECT 所需的列,然后通过widget_id 加入它们,以便显示所有小部件,与点击量无关:

$query = "SELECT w.id AS w_id, 
c.id AS c_id,
w.manf_id AS w_manf,
w.name AS w_name,
w.widgetlink AS w_link,
w.type_id AS w_type_id,
w.image_url AS w_url,
c.clicks AS c_clicks
FROM widgets w
LEFT JOIN clicks c ON w.id = c.id
ORDER BY c.clicks DESC";

当然,这是假设 clicks.clicks 列存储小部件中的点击量。

额外

您还可以考虑存储每次点击,为每次点击添加一个日期时间属性和一个使用唯一标识符的主键(或来自日期时间、IP 地址和 ID 属性的复合键),这样您就可以单独跟踪每次点击每个小部件。然后,您可以使用 SELECT 字符串中的 COUNT() 选择每个小部件的点击次数。取决于您要对数据库执行的操作。

关于php - 如何编写此 mysql 连接查询,然后根据需要进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16705312/

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