MySQL LEFT JOIN数组,如何返回多行?

时间:2016-07-15 23:11:55

标签: mysql

我有以下代码,到目前为止一直运作良好:

$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']时,我只得到c.title数组中的第一个p.id_category。我想获得p.id_category中所有类别的标题。有人能帮我一下吗?我希望自己能够理解,作为MySQL的新手,即使让我的LEFT JOIN工作也是一个挑战: - )

修改

今天早上坐下来寻找解决方案并在以下问题的答案中找到答案:MySQL: How to fetch data with left-join if column contains multiple ids?。感谢所有帮助。

2 个答案:

答案 0 :(得分:1)

错误的想法因为id_category应该是唯一的整数值。如果您想要m:n关系,则需要添加另一个表,其中至少有两个主要外键来自您希望拥有关系的表。因此,在您的情况下,您将创建具有主键id_product和id_category的表title_to_categories。 Id_product将等于p.id,id_category等于c.id.

答案 1 :(得分:0)

尝试:

$items= $db->fetchAll();

然后和foreach一起去。