我尝试选择表格pep_posts
然后离开加入pep_postmeta
,但表pep_postmeta
是可选的,如果表pep_postmeta
中没有数据,结果仍然可以显示。< / p>
下面是我的查询,但此查询仅显示数据,如果表pep_postmeta
有数据,这不是我想要的。
select p.*, pm.*
from `pep_posts` p
left join `pep_postmeta` pm
on pm.post_id=p.ID
where p.post_parent='".$current_page_id."' and
p.post_status='publish' and pm.meta_key='book_image'
答案 0 :(得分:2)
在左连接中,如果引用WHERE
子句中的可选表,它仍将仅过滤掉该表中具有值的行。您需要做的是将pm
上的条件移至ON
子句,在该子句中不会删除行,只需将值设置为NULL
。
SELECT p.*, pm.*
FROM `pep_posts` p
LEFT JOIN `pep_postmeta` pm
ON pm.post_id=p.ID and pm.meta_key='book_image'
WHERE p.post_parent='".$current_page_id."' AND
p.post_status='publish'
答案 1 :(得分:1)
WHERE条件中的问题
and pm.meta_key='book_image'
如果pep_postmeta没有数据,则选择中的pm.meta_key值将为NULL 所以,您应该删除此条件或将其重写为此类
and (pm.meta_key='book_image' or pm.meta_key IS NULL)