0

product_to_category p2c包含 2 列:

category_id product_id

此表可能包含每个产品的多个条目,因此MAX (category_id)是必需的。

category_to_google c2g包含 2 列:

category_id google_id

google_category gc包含 2 列:

google_id name

所以从 p2c 获取 MAX(category_id),

从 c2g 获取 google_id WHERE category_id = selected category_id,

最后从 gc WHERE google_id = selected google_id 获取名称

我似乎无法正确加入。

回答:

$query = $this->db->query("
    SELECT name FROM {$this->prefix}google_category 
    WHERE google_id = (
        SELECT google_id FROM {$this->prefix}category_to_google 
        WHERE category_id = (
            SELECT MAX(category_id) FROM {$this->prefix}product_to_category 
            WHERE product_id = '" . (int)$product_id . "'
        )
    )");

这行得通,谢谢RC。

是否有可能把它变成一个很好的连接,它必须嵌套到现有的查询中?

4

2 回答 2

2

我不确定我是否得到了你想要的,但我认为:

SELECT name FROM gc WHERE google_id = (
    SELECT google_id FROM c2g WHERE category_id = (
        SELECT MAX(category_id) FROM p2c
    )
);

可能是您正在寻找的东西。

于 2013-08-20T11:17:34.763 回答
0

也许像这样的东西......

 SELECT name 
   FROM google_category c
   JOIN category_to_google cg
     ON cg.google_id = c.google_id
   JOIN (SELECT MAX(category_id) max_category_id 
           FROM product_to_category 
          WHERE product_id = $product_id) x
             ON x.max_category_id = cg.category_id 
于 2013-08-20T11:36:13.090 回答