2011-04-03 45 views
1

我在玩Opencart的1.4.9.4數據庫。因爲我沒有經驗過數據庫,我發現結構很奇怪(很難,很瘋狂)。例如: 如果我需要顯示的模型和product我需要連接2臺產品PRODUCT_DESCRIPTION,和第一類相同的方法,製造商等 的名字裏有一個表只有兩個字段,product_to_category,fields:category_id and product_id。我使用了多少個JOIN,如果我真的應該使用JOIN,使它工作? 但其中一件非常奇怪的事情是,在獲得產品ID,名稱和模型的CATEGORY NAME和MANUFACTURER NAME的情況下進行查詢時,我無法實現該功能。這將涉及表,至少我認爲: 產品,product_description,product_to_category,category_description和製造商。 對不起,我現在頭腦混亂!如何使用Opencart數據庫中的表之間的聯接進行SELECT?

+1

我會投票結束這牆的文字,除非你可以把它變成一個問題。此外,你似乎在[這個問題]中的連接做得很好(http://stackoverflow.com/questions/4999157/mysql-select-duplicated-rows-from-opencarts-database)。自那之後發生了什麼變 – Ronnis 2011-04-03 20:48:32

+0

哦,我完全忘了!謝謝你,兄弟。我不知道我的記憶發生了什麼。需要更多的睡眠。我真的很抱歉,那很尷尬。 :( – tenshimsm 2011-04-04 01:33:54

回答

3

在Opencart的您加入的product_id值加在一起得到完整的一行數據(與使用WHERE子句來設置的描述正確的語言ID,所以

SELECT * FROM product p LEFT JOIN product_description pd ON p.product_id = pd.product_id WHERE pd.language_id = 1 LIMIT 20 

能吸引所有數據這兩個表並正確使用20種產品和語言1(英語默認值)的限制進行連接。當然,在php中正確編寫它時,您需要動態調用某些數據(例如表前綴和語言ID )所以它會工作,如果你有多個語言或帶有前綴的數據庫表。像

$query = "SELECT * FROM `" . DB_PREFIX . "product` p LEFT JOIN `" . DB_PREFIX . "product_description` pd ON p.product_id = pd.product_id WHERE pd.language_id = " . (int)$this->config->get('config_language_id') . " LIMIT 20"; 
+0

非常感謝,但我完全忘了我已經問過這個了,對不起周杰倫。 – tenshimsm 2011-04-16 15:42:24

相關問題