2011-07-21 52 views
0

我需要從一個查詢中的2個表中獲取信息,我在谷歌搜索它,並提出了加入? 我得到這個代碼一次從2個表中獲取信息?

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

,但它似乎沒有工作,它outpus這個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有一個get變量,'apilinks'的設置與'links'不同 所以它會有相同的外觀url,但它必須檢查兩個表

+4

該錯誤似乎與查詢本身無關... – thedaian

+0

用'mysql_error()'得到更好的錯誤信息! – binarious

+0

查詢很好。你需要發佈你的代碼。 – sap

回答

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

我認爲你需要指定你想要的code柱:

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

我需要它來檢查鏈接和apilinks中的代碼和url – Cody

+0

您已經在檢查兩者。如果你想同時選擇,你可以用'select links.code,apilinks.code'來完成 – binarious

0

另一個語法:

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

請注意,我假設url字段在鏈接表中。

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