Php MySQL内部连接。使用来自另一个表的数据从一个表中提取数据

Php MySQL内部连接。使用来自另一个表的数据从一个表中提取数据,php,mysql,sql,inner-join,Php,Mysql,Sql,Inner Join,我刚刚开始学习如何正确进行内部连接,我想不出最好/最简单的方法 我正在构建一个url缩短器,我正在尝试构建一个查询,该查询将获得所有长url。目标匹配一个slug“test”。一个slug可能指向多个long_url.destination(url混乱、地理匹配等)。所以我需要这个slug来获取所有的长url。目的地与短url.slug相同 在运行另一个查询以从slug获取short\u id之前,我先运行另一个查询以选择long\u url中具有匹配short\u id的所有行 我认为如果我使

我刚刚开始学习如何正确进行内部连接,我想不出最好/最简单的方法

我正在构建一个url缩短器,我正在尝试构建一个查询,该查询将获得所有长url。目标匹配一个slug“test”。一个slug可能指向多个long_url.destination(url混乱、地理匹配等)。所以我需要这个slug来获取所有的长url。目的地与短url.slug相同

在运行另一个查询以从slug获取short\u id之前,我先运行另一个查询以选择long\u url中具有匹配short\u id的所有行

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

我希望在long\u url表中获取所有目标列,其中只有short\u url中的slug数据,而不必运行单独的查询来从slug中获取short\u 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 destination, geo FROM long_url LEFT JOIN short_url ON (long_url.short_id = short_url.short_id) WHERE enabled = 1 选择目的地,从长\u url左加入短\u url ON(long_url.short_id=short_url.short_id),其中enabled=1
您不需要像我一样限定所有列名,因为在这个特定的查询中没有任何歧义。我所做的只是添加一个绑定参数占位符。

我觉得您的查询很好。您到底遇到了什么问题?我必须在查询中添加WHERE slug=:slug。否则,我只是想看看是否有一种更有效/更快的方法。到目前为止,这一切正常,我只是想看看我是否使用了正确的连接。
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