JAVA连接MySQL没有返回集_mysql右连接查询返回没有值
我正在尝试回归与所选品牌($品牌)共享“交易ID”的前10个“品牌” . 我从一个基本查询开始,该查询使用列id和品牌查询1个表 .我现在想要在2个单独的表(分别用于事务和产品)上使用公共字段(sku) .我从这个查询开始,获得初始逻辑(信用到stackoverflow贡献者),它完美地工作 .$brand = $_POST['brand'];$query = $db->prepare("S
我正在尝试回归与所选品牌($品牌)共享“交易ID”的前10个“品牌” . 我从一个基本查询开始,该查询使用列id和品牌查询1个表 .
我现在想要在2个单独的表(分别用于事务和产品)上使用公共字段(sku) .
我从这个查询开始,获得初始逻辑(信用到stackoverflow贡献者),它完美地工作 .
$brand = $_POST['brand'];
$query = $db->prepare("SELECT brand
FROM transactions
WHERE
id IN (SELECT id FROM transactions WHERE brand = :brand)
AND brand <> :brand
GROUP BY brand
ORDER BY COUNT(*) DESC
LIMIT 10");
$query->bindparam(":brand", $brand);
$query->execute();
如上所述,上述工作非常有用 . 我在下面略微修改它以包含相关表格 . 但是,它不起作用 . 并且不返回任何值 .
任何接受者 . 非常感谢 - 亚当
$brand = $_POST['brand'];
$query = $db->prepare("SELECT `2_products`.`brand`
FROM `2_products`
RIGHT JOIN `1_txns`
ON `2_products`.`sku`=`1_txns`.`sku`
WHERE
`1_txns`.`txn_id` IN (SELECT `1_txns`.`txn_id` FROM `1_txns` WHERE `2_products`.`brand` = :brand)
AND `2_products`.`brand` <> :brand
GROUP BY `2_products`.`brand`
ORDER BY COUNT(*) DESC
LIMIT 10");
$query->bindparam(":brand", $brand);
$query->execute();
我知道可能还有其他方法,例如创建临时表,只有 txn_id 和 brand 列,但我再次不确定如何执行此操作 .
编辑尝试#2 - 根据以下建议,我移动了AND 2_products . brand <>:品牌立即在ON条款之后 . 仍然返回0行 .
$brand = $_POST['brand'];
$query = $db->prepare("SELECT `2_products`.`brand`
FROM `2_products`
RIGHT JOIN `1_txns`
ON `2_products`.`sku`=`1_txns`.`sku`
AND `2_products`.`brand` <> :brand
WHERE `1_txns`.`txn_id` IN (SELECT `1_txns`.`txn_id` FROM `1_txns` WHERE `2_products`.`brand` = :brand)
GROUP BY `2_products`.`brand`
ORDER BY COUNT(*) DESC
LIMIT 10");
$query->bindparam(":brand", $brand);
$query->execute();
编辑3:还考虑到在我的内部选择查询中,where子句是一个未从内部查询中选择的列的事实 . 所以我试过这个:我得到一个错误'操作数应该只包含1列'
SELECT `2_products`.`brand`
FROM `2_products`
RIGHT JOIN `1_txns`
ON `2_products`.`sku`=`1_txns`.`sku`
AND `2_products`.`brand` <> :brand
WHERE `1_txns`.`txn_id` IN (SELECT `1_txns`.`txn_id`, `2_products`.`brand`
FROM `1_txns`
LEFT JOIN `2_products`
ON `1_txns`.`sku`=`2_products`.`sku`
WHERE `2_products`.`brand` = :brand)
GROUP BY `2_products`.`brand`
ORDER BY COUNT(*) DESC
LIMIT 10;
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)