gpt4 book ai didi

php - MySQL 内部连接。从一个表中提取数据,从另一个表中提取数据

转载 作者:行者123 更新时间:2023-11-29 02:33:51 28 4
gpt4 key购买 nike

我刚刚开始学习如何正确执行 INNER JOINS,我想不出最好/最简单的方法。

我正在构建一个 url 缩短器,我正在尝试构建一个查询,该查询将使所有 long_url.destination 匹配一个 slug“test”。一个 slug 可能指向多个 long_url.destination's(URL 改组、GEO 匹配等)。所以我需要 slug 来获取所有 long_url.destination 的相同 short_url.slug。

在我运行另一个查询以从 slug 获取 short_id,然后运行另一个查询以选择 long_url 中具有匹配的 short_id 的所有行之前。

我认为如果我使用内部联接可能会更快,但我不确定如何正确设置它。

我想获取表 long_url 中的所有目标列,仅包含 short_url 中的 slug 数据,而无需运行单独的查询来从 slug 中获取 short_id。

Table: short_url
Columns: short_id | slug | enabled | timestamp
example: 1 test 1 1323343922

Table: long_url
Columns: long_id | short_id | destination | geo | enabled | timestamp
example: 1 1 http://www.test.com US 1 132334922
example: 2 1 http://www.test.co.uk UK 1 132334922

到目前为止我得到了这个:

SELECT destination, geo FROM long_url INNER JOIN short_url 
ON long_url.short_id = short_url.short_id WHERE enabled = 1;

function get_long_urls($slug) {

$query = "SELECT....";
$stmt = $db->prepare($query);
$stmt->execute(array(':slug' => $slug));
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);

return (array) $results:

}

example $results = array(
'http://www.test.com' => 'US',
'http://www.test.co.uk' => 'UK',
);

感谢您的帮助。

最佳答案

select long_url.destination
, long_url.geo
from long_url
inner
join short_url
on long_url.short_id = short_url.short_id
where short_url.slug = :slug
and long_url.enabled = 1

您不需要像我一样限定所有列名,因为在这个特定的查询中没有任何歧义。我真正做的只是添加一个绑定(bind)参数占位符。

关于php - MySQL 内部连接。从一个表中提取数据,从另一个表中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8380298/

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