在我的项目中,我想执行此代码以获得某个结果:
$abc = "SELECT *
FROM ptc_ads
INNER JOIN ptc_ads_viewed
ON ptc_ads.pads_id = ptc_ads_viewed.padv_id
WHERE ptc_ads.pads_id != ptc_ads_viewed.padv_ad_id
OR ptc_ads_viewed.padv_uname != '".$uname."'
AND ptc_ads.pads_group = '1'
AND ptc_ads.pads_mem1 = '1'
ORDER BY ptc_ads.pads_id DESC";
$res = mysql_query($abc) or die(mysql_error());
我认为问题是我用来加入的字段应该有相同的数据。
如果ptc_ads.pads_id
是1,2,3,4,那么ptc_ads_viewed.padv_id
也应该是1,2,3,4。但在我的情况下,它不可能有相同的行。
在ptc_ads_viewed.padv_id
中,行数多于ptc_ads_viewed.pads_id
,因此字段不匹配,仅在两行匹配时返回结果。
例如:ptc_ads_viewed.pads_id
包含两行,因此它有两个id' s(1,2)和ptc_ads_viewed.padv_id
有四个id' s(1,2,3,4) 。所以查询只返回两个表的前两个id的结果(1,2)。 3,4不受影响。但预期结果也是3,4。无论如何,我如何从ptc_ads_viewed.padv_id
中的所有行获得结果?
答案 0 :(得分:1)
您正在使用INNER JOIN
- 这意味着您将获得两个表中都存在的结果,因此在您的示例中,您只会获得1和2
您可以使用左连接或右连接,这样您将获得所有结果(左连接意味着 - 第一个表中存在但不存在于第二个表中的行 - 您将从第一个表中获取数据,对于第二个表的列,您将获得空值