2016-07-15 206 views
1

我有下面的代碼已經非常完美到現在爲止:MySQL LEFT JOIN數組,我如何返回多行?

$db->table = "horse_products as p"; 
$db->colums = "p.*, l.address as address, l.storename as supplier_name, c.title as cat_title, c.id_parent as id_parent"; 
$db->join = "LEFT JOIN locations as l ON l.id = p.id_location" 
       ." LEFT JOIN categories as c ON c.id = p.id_category WHERE c.id_parent = 8"; 
$db->orderBy = "p.id_location ASC, p.id_product ASC"; 
$items = $db->Select(); 

以前p.id_category是一個整數,因爲只有一個的「類別」表內的類別是允許與產品相關。不過今天我決定讓p.id_category用逗號分隔數組。這個缺點是,當我嘗試回顯$item['cat_title']時,我只能得到p.id_category陣列中的第一個c.title。我想獲得p.id_category中所有類別的標題。有人能幫我一下嗎?我希望我做我自己的理解,作爲一個MySQL的新手甚至讓我LEFT JOIN的工作是:-)挑戰

編輯:

週六早上找到一個解決自己失望,發現它在回答下面的問題:MySQL: How to fetch data with left-join if column contains multiple ids?。感謝所有幫助。

回答

0

嘗試用:

$items= $db->fetchAll(); 

然後用foreach去。

1

不好的想法beacause id_category應該是唯一的整數值。如果你想擁有m:n的關係,你需要添加另外一個表,至少有兩個你想要關係的表的主鍵。所以在你的情況下,你將使用主鍵id_product和id_category創建表title_to_categories。 Id_product將等於對c.id.的p.id和id_category。

+0

謝謝你菲利普。在不久的將來,我將不得不將這些關係存儲在單獨的表格中,因爲我的數據庫正在增加更多的相互關係。儘管我現在使用了'GROUP_CONCAT()'和'FIND_IN_SET()',它在短期內做了詭計。 –

+1

好的下次,當你在開始使用它的時候,你在php中創建數據庫時考慮模型。這將爲您節省大量時間。 –