一次从2张桌子获取信息?

时间:2011-07-21 14:40:24

标签: php mysql

我需要在一个查询中从2个表中获取信息,我在谷歌搜索它并且它想出了连接? 我有这个代码

mysql_query("SELECT code, url FROM apilinks, links WHERE apilinks.code='$code' and links.code='$code'");

但它似乎不起作用,它超出了这个mysql错误

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/codyl/public_html/projects/tests/tirl/code.php on line 18

我需要在链接表和apilinks表中找到url和code,因为url有一个get变量,'apilinks'的设置与'links'不同 所以它将具有相同的查找网址,但它必须检查两个表

4 个答案:

答案 0 :(得分:1)

我不认为您的错误来自您的SQL查询,但无论如何:

您的SQL查询生成笛卡尔积。 apilinks中的每一行都与链接中的每一行连接在一起。这很少是你想要的。您需要在WHERE子句中添加JOIN条件。

从您的查询中,我猜code是您要加入的列。

SELECT links.code, url 
FROM apilinks, links 
WHERE apilinks.code=links.code
AND links.code='$code'

或者使用显式联接,这对您来说可能更明显:

SELECT links.code, url 
FROM apilinks INNER JOIN links ON apilinks.code=links.code
WHERE links.code='$code'

答案 1 :(得分:1)

我认为您需要指定所需的code列:

SELECT links.code, links.url 
FROM   apilinks, links 
WHERE  apilinks.code='$code' 
AND    links.code='$code'

答案 2 :(得分:0)

另一种语法:

mysql_query("SELECT a.code, l.url FROM apilinks a, links l WHERE a.code='$code' and l.code='$code'");

请注意,我假设url字段位于链接表中。

答案 3 :(得分:0)

SELECT a.code, a.url 
FROM apilinks a, links l 
ON ( a.code = l.code )
WHERE a.code = "$code";