当表具有相同名称的列时,多个内部联接

时间:2015-08-06 15:19:50

标签: mysql inner-join multiple-instances

我有:

SELECT * FROM products 
    INNER JOIN cat1 ON products.maincategory=cat1.rid
    INNER JOIN cat2 ON products.cat2=cat2.rid

它显示所有信息正常,但如果我echo $row_rsProducts['category']我无法确定该类别是来自表格cat1还是表格cat2。我该如何解决这个问题?

enter image description here

2 个答案:

答案 0 :(得分:1)

您需要为来自cat1cat2的商品提供别名:

SELECT products.*,
       manufacturer.*,
       cat1.rid as c1rid,
       cat1.category as c1category,
       ifnull(cat2.rid,'') as c2rid,
       ifnull(cat2.category,'') as c2category
FROM products 
INNER JOIN manufacturer ON products.manufacturer=manufacturer.rid
INNER JOIN cat1 ON products.maincategory=cat1.rid
LEFT OUTER JOIN cat2 ON products.cat2=cat2.rid

而不是像这样使用它们:echo $row_rsProducts['c1category']

答案 1 :(得分:0)

不使用SELECT *但实际命名列并为每个相同的命名列提供别名或通过表和列名称引用它们