Php 从两个表中获取数据
我有一个关于加入的问题。基本上有两个表product和product\u boost。表product\u boost将Php 从两个表中获取数据,php,mysql,codeigniter,Php,Mysql,Codeigniter,我有一个关于加入的问题。基本上有两个表product和product\u boost。表product\u boost将product\u id作为外键,该外键也位于product表中 我希望使用两个表中都可用的join来获取数据,如果不是这样,则只有来自第一个表的数据会出现 我使用的是右外连接,这里是我的查询 SELECT * FROM `vefinder_product` RIGHT OUTER JOIN `vefinder_product_boost` ON `vefinder_prod
product\u id
作为外键,该外键也位于product表中
我希望使用两个表中都可用的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
从“vefinder\u产品”中选择*
在“vefinder\u product\u boost”上右外连接“vefinder\u product\u boost”。“product\u id”='vefinder\u product`.'product\u id`
其中'vefinder_product`.'status`=1
和“vefinder\u产品”。“post\u类型”!=5.
以及('348'中的'vefinder_product'。'country'
和“vefinder\u product”。“product\u stock”>0
和“vefinder\u product”。“product\u in\u stock”=1
以及“vefinder产品”和“boost”。“目标年龄”从“>=20岁开始
还有“vefinder产品”和“boost”。“target\u age\u to”您可以使用第三方软件,如SQLyog。
连接查询非常简单,只需使用UI构建查询,并为表之间的字段分配关系。
在sqlyog中,您可以从多个表(而不仅仅是两个表)获取数据。
因为我目前正在使用此软件以节省时间。
- 如果要从第一个(最左侧)表中获取所有数据,请改用
左联接李>
- 除第一个表(最左侧)以外的表上的任何
条件(其中
条件)都应在左联接中切换到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
选择*
来自“vefinder_产品”
左外连接'vefinder\u product\u boost'
在'vefinder\u product\u boost'。'product\u id`='vefinder\u product`.'product\u id`和
`vefinder\u产品\u提升`.`目标年龄`>=20岁
`vefinder_产品_提升`.`target_age_至`0且
`vefinder_产品`.`库存产品`=1
按“vefinder\u product”订购。“is\u boosted”DESC,
`vefinder_product`.`is_-sposered`DESC,
`vefinder_产品`.`created_date`DESC
限制21
使用left join并将where条件放在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
从“vefinder\u产品”中选择*
在“vefinder\u product\u boost”上左外连接“vefinder\u product\u boost”。“product\u id”='vefinder\u product`.'product\u id`
和“vefinder\u产品”。“状态”=1
和“vefinder\u产品”。“post\u类型”!=5.
以及('348'中的'vefinder_product'。'country'
和“vefinder\u product”。“product\u stock”>0
和“vefinder\u product”。“product\u in\u stock”=1
以及“vefinder产品”和“boost”。“目标年龄”从“>=20岁开始
还有“vefinder\u product\u boost”。“target\u age\u to`您是否尝试了左连接?@Lithilion是的,很遗憾它也不起作用。您可以提供一些示例数据并期望结果吗?如果您只想获取匹配数据,您应该使用Internaljoin@SachinSarola我没有使用内部连接