从两个表中获取数据



我有一个关于加入的查询。基本上有产品和product_boost两表。表product_boostproduct_id作为外键,该外键也在产品表中。

我想使用两个表中都可用的 join 来获取数据,如果不仅来自第一个表的数据会来。

我正在使用右外连接,这是我的查询

SELECT * FROM `vefinder_product` 
RIGHT OUTER JOIN `vefinder_product_boost` ON `vefinder_product_boost`.`product_id`=`vefinder_product`.`product_id` 
WHERE `vefinder_product`.`status` = 1 
AND `vefinder_product`.`post_type` != 5 
AND `vefinder_product`.`country` IN('348') 
AND `vefinder_product`.`product_stock` >0 
AND `vefinder_product`.`product_in_stock` = 1 
AND `vefinder_product_boost`.`target_age_from` >= 20 
AND `vefinder_product_boost`.`target_age_to` <= 40  
ORDER BY `vefinder_product`.`is_boosted` DESC, 
`vefinder_product`.`is_sponsered` DESC, 
`vefinder_product`.`created_date` DESC LIMIT 21 

我怎样才能实现想要的东西,因为这不起作用。我正在使用代码点火器 php。

  • 如果要从第一个(最左边(表中获取所有数据,请改用Left join
  • 除第一个表(最左侧(之外的表上的任何Where条件都应移至Left Join中的ON条件。否则,Where也会过滤掉不匹配的行(null右侧表中(。

请尝试以下操作:

SELECT * 
FROM `vefinder_product` 
LEFT OUTER JOIN `vefinder_product_boost` 
ON `vefinder_product_boost`.`product_id`=`vefinder_product`.`product_id` AND 
`vefinder_product_boost`.`target_age_from` >= 20 AND 
`vefinder_product_boost`.`target_age_to` <= 40 
WHERE `vefinder_product`.`status` = 1 AND 
`vefinder_product`.`post_type` != 5 AND 
`vefinder_product`.`country` IN('348') AND 
`vefinder_product`.`product_stock` >0 AND 
`vefinder_product`.`product_in_stock` = 1 
ORDER BY `vefinder_product`.`is_boosted` DESC, 
`vefinder_product`.`is_sponsered` DESC, 
`vefinder_product`.`created_date` DESC 
LIMIT 21 

使用左连接并将 where 条件放入 ON cluase

SELECT * FROM `vefinder_product` 
left OUTER JOIN `vefinder_product_boost` ON `vefinder_product_boost`.`product_id`=`vefinder_product`.`product_id` 
and `vefinder_product`.`status` = 1 
AND `vefinder_product`.`post_type` != 5 
AND `vefinder_product`.`country` IN('348') 
AND `vefinder_product`.`product_stock` >0 
AND `vefinder_product`.`product_in_stock` = 1 
AND `vefinder_product_boost`.`target_age_from` >= 20 
AND `vefinder_product_boost`.`target_age_to` <= 40  
ORDER BY `vefinder_product`.`is_boosted` DESC, 
`vefinder_product`.`is_sponsered` DESC, 
`vefinder_product`.`created_date` DESC LIMIT 21 

您可以使用第三方软件,如SQLyog。 对于连接查询来说,只需使用 UI 构建查询并分配与表之间字段的关系即可非常简单。 在 sqlyog 中,您可以从多个表中获取数据,而不仅仅是两个表。 因为我目前正在使用这个软件来节省时间。

相关内容

  • 没有找到相关文章