[英]Left Join Only Returns If Matching
我有两个表(claim_pics&Claiminfo)我正在查询结果页面。
当两个表的表Claim_id(Claiminfo.claim_id = Claim_pics.claim_id)匹配时,它的效果很好。
但是,当只有一个带有Claim_id的表(即在ClaimInfo中)而没有匹配的Claim_id时,该行的所有属性都将显示,但Claim_id除外。
没有claim_id,因此,如果用户单击编辑按钮,则没有claim_id告诉它要去哪里。
无论是否存在匹配项,我都需要它提供Claim_id的$ results。 有什么想法或解决方法吗?
谢谢。
$query = "SELECT * FROM claiminfo
LEFT JOIN ( claim_pics )
ON ( claiminfo.claim_id = claim_pics.claim_id )
WHERE( userid='$userid' )
ORDER BY claiminfo.ts
DESC LIMIT 200";
//只返回
图片和信息都匹配的claim_ids
$result = mysql_query( $query );
while( $row = mysql_fetch_assoc( $result ) ) {
$namelocation = $row['namelocation'];
$claimholder = $row['claimholder'];
$occasion = $row['occasion'];
$geotag = $row['geotag'];
$lat = $row['lat'] ;
$lng = $row['lng'];
$claim_id = $row['claim_id'];
$img = $row['location'];
$html = " ... "
正如评论所指出的,空的claim_pics
行中的null claim_id
可能使$row['claim_id']
成为空白。 解决此问题的最简单方法是显式选择claiminfo.claim_id
并claiminfo.claim_id
加上别名:
$query = "SELECT *, claiminfo.claim_id AS id FROM claiminfo
LEFT JOIN ( claim_pics )
ON ( claiminfo.claim_id = claim_pics.claim_id )
WHERE( userid='$userid' )
ORDER BY claiminfo.ts
DESC LIMIT 200";
然后,您可以可靠地获得与变量claim_id $row['id']
在更一般的注释中,这种情况说明了为什么最好不要使用SELECT * 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.