两个连接语句给未知列
我有这样的SQL查询:两个连接语句给未知列
SELECT `main_table`.* FROM `ves_brand` AS `main_table`
INNER JOIN
(SELECT DISTINCT value from catalog_product_entity_int
where row_id in
(select row_id from catalog_product_entity_int
WHERE (attribute_id, value) IN ((99, 4)))) AS `t`
ON main_table.brand_id = t.value
INNER JOIN `catalog_product_entity` AS `cpeiz`
ON cpeiz.row_id = catalog_product_entity_int.row_id
WHERE (cpeiz.attribute_set_id != 19)
这给了错误: #1054 - Unknown column 'catalog_product_entity_int.row_id' in 'on clause'
即使我设置为列catalog_product_entity_int.row_id
一个别名,列始终是“未知”。
catalog_product_entity_int
是在你的子查询中定义的,你不能直接从子查询之外引用它。 (认为它像一个局部变量,你必须以某种方式将其返回到主查询)
非常依赖于你的数据集,但像这样将工作
SELECT `main_table`.* FROM `ves_brand` AS `main_table`
INNER JOIN
(SELECT DISTINCT value, row_id from catalog_product_entity_int
where row_id in
(select row_id from catalog_product_entity_int
WHERE (attribute_id, value) IN ((99, 4)))) AS `t`
ON main_table.brand_id = t.value
INNER JOIN `catalog_product_entity` AS `cpeiz`
ON cpeiz.row_id = t.row_id
WHERE (cpeiz.attribute_set_id != 19)
非常好的主意!它的工作原理!非常感谢 ! – androniennn
请注意,这现在将SELECT DISTINCT更改为VALUE和ROW_ID的不同组合。这可能不是您想要的。 – JeffUK
我加了一个'group by brand_id'。 – androniennn
是ROW_ID一列catalog_product_entity_int表 – jhenderson2099
我没有按照你想要做的。示例数据和期望的结果将非常有帮助,对您要完成的逻辑的解释也是如此。 –
个人建议:尝试格式化您的SQL语句 看看http://www.sqlstyle.guide/ 正确的格式化SQL语句让您和您的伙伴们更轻松地解决问题并进行所有更改 –