三表MySQL连接

时间:2013-12-09 08:36:55

标签: mysql join

就在我以为我已经想出了MySQL JoINS的时候,我遇到了这个问题,而且我正在努力...... 我有一张商店的三张桌子:

tblProducts              tblProdCat                  tblCategory

prodID                   prodCatID                   categoryID
prodName                 categoryID                  categoryHidden
prodPrice                prodID                      categoryName

我想做的是创建一个查询,查找未隐藏的类别中的产品,但我无法使其生效。

目前,我只能通过将产品表连接到ProdCat表来查找类别中的产品。由于此查询有效,我将其改编为:

SELECT
    p.prodID, p.name, 
FROM
    tblProducts p
INNER JOIN
    tblProdCat pc
    ON 
    pc.prodID = p.prodID
inner JOIN
    tblCategory c
    ON
    c.categoryID = pc.categoryID
WHERE
    pc.categoryID = '7' AND 
    c.categoryHidden = '0'

有人可以帮我确定为什么这不起作用吗?

编辑:修复了prodID的名称(这是一个错字而不是导致问题的原因)

3 个答案:

答案 0 :(得分:0)

productID

上没有名为tblProducts的列

尝试

SELECT   p.prodID, p.name, 
FROM    tblProducts p
INNER JOIN tblProdCat pc
    ON pc.productID = p.prodID
inner JOIN tblCategory c
    ON c.categoryID = pc.categoryID
 WHERE   pc.categoryID = '7' AND c.categoryHidden = '0'

此外,我无法从您的架构中判断,但如果pc.categoryID是一个数字,则您不需要引号。

答案 1 :(得分:0)

select * from tblProducts as  p Inner join  tblProdCat as pc  Inner join tblCategory as c
where  pc.categoryID = '7' AND  c.categoryHidden = '0'

试试这种方式

答案 2 :(得分:-1)

尝试这样的事情(只是虚拟代码)

select p.productID, p.name from 
tblProducts as p,tblCategory as c,tblProdCat as pc
where pc.categoryID = '7' AND c.categoryHidden = '0'