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
因此得到MAX(category_id)FROM p2c,
获取google_id FROM c2g WHERE category_id = selected category_id,
最终从gc获取名称WHERE google_id = select 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。
是否可以将其转换为良好的连接,它必须嵌套到现有的查询中?
答案 0 :(得分:2)
我不确定我的确得到了你想要的东西,但我想:
SELECT name FROM gc WHERE google_id = (
SELECT google_id FROM c2g WHERE category_id = (
SELECT MAX(category_id) FROM p2c
)
);
可能就是您要搜索的内容。
答案 1 :(得分: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