2011-10-27 39 views
-2

categories(TABLE_CATEGORIES),其具有字段的查詢命令:categories_idparent_id如何寫在MySQL

categories_description(TABLE_CATEGORIES_DESCRIPTION),其具有字段:categories_idcategories_name

現在,根據$cpath=parent_id我想獲得categories_namecategories_id,這是我的命令,但它顯示了語法錯誤。

$query = "select c.categories_id, cd.categories_name from " . 
TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd 
          where c.categories_id=cd.categories_id and c.parent_id=".$cPath; 

錯誤:1064您的SQL語法錯誤;檢查對應於你的MySQL服務器版本的在線使用近「」正確的語法手冊2

+2

你能告訴我們你收到了什麼錯誤嗎? – Flimzy

+3

什麼是插值後的$查詢的值? – symcbean

+0

如果您在發送給db之前未發佈$ query值,我們無法幫到您更多... – Marco

回答

0

您應該使用

SELECT cd.categories_id, cd.categories_name 
FROM `TABLE_CATEGORIES_DESCRIPTION` cd 
    INNER JOIN `TABLE_CATEGORIES` c 
    ON cd.categories_id = c.categories_id 
WHERE c.parent_id = your_id 

編輯,以反映修改用戶的問題:
確定「TABLE_CATEGORIES」和「TABLE_CATEGORIES_DESCRIPTION」都不包含空格或奇怪的字符?
如果是這樣,你必須用反引號將它們括起來。

+0

您的查詢沒有區別嗎? (除了隱式顯式連接和更好的格式化) – Marcus

+0

@Marcus:嗯,我認爲使用'JOIN'比使用WHERE更好(即使某些引擎在意識到查詢應該做什麼時將其轉換)。無論如何OP沒有給我們任何其他工作;) – Marco

+0

我完全同意,只是質疑它不會解決問題;) – Marcus

0

內連接可以幫助...

SELECT c.categories_id,cd.categories_name FROM TABLE_CATEGORIESÇ INNER JOIN TABLE_CATEGORIES_DESCRIPTION CD上c.categories_id = cd.categories_id其中c.parent_id = $ CPATH

請檢查此代碼:

$ query =「select c.categories_id,cd.categories_name from」。 TABLE_CATEGORIES。 「 C, 」 。 TABLE_CATEGORIES_DESCRIPTION。 「cd where c.categories_id = cd.categories_id and c.parent_id ='」。$ cPath。「'」;

+0

它實際上是在執行一個內部連接已經。它被稱爲隱式連接。 – Marcus