我正在尝试创建一个SQL查询,它将在我的MySQL数据库中输出没有分配特色图像的Woocommerce产品。由于Woo基于Wordpress,我不知道从哪里获取信息,但看起来好像我需要加入一些表格。
有没有人有这方面的经验?我有500个产品,都需要有一个特色图片。我随机地浏览它们并分配每个产品一个,但我需要看看有多少剩下要做,哪些需要做。
我无法按Woocommerce后端的特色图片对产品进行排序,所以我希望可以通过SQL查询来实现。
看起来我找到了正确的查询。它加入了一些表格,为我提供了所有产品和特色图片的列表。然后我可以对此列表进行排序,看看哪些产品有NULL特色图片。我使用的SQL查询是在它帮助某人的情况下:
SELECT p.ID, p.post_title, pm.*
FROM wp_posts p
LEFT JOIN wp_postmeta pm ON p.ID = pm.post_id
AND pm.meta_key = '_thumbnail_id'
WHERE p.post_type IN ( 'product' )
答案 0 :(得分:2)
这将是我的查询。它将返回所有没有图片的帖子ID(与产品ID相同)
select ID FROM wp_posts WHERE ID NOT IN (select post_id from wp_postmeta WHERE meta_key="_thumbnail_id") AND post_type="product"
答案 1 :(得分:1)
创建名为from collections import defaultdict
invert_dict = defaultdict(set)
for k, v in orig_dict.items():
invert_dict[v].add(k)
# Optionally convert back to regular dict to avoid lookup auto-vivification in the future:
# invert_dict = dict(invert_dict)
的视图:
Products_List
然后使用上面的SELECT
`wptt_posts`.`post_title` AS `post_title`,
`wptt_posts`.`post_name` AS `post_name`,
`wptt_postmeta`.`meta_value` AS `meta_value`,
`wptt_posts`.`ID` AS `ID`
FROM
(
`wptt_posts`
JOIN `wptt_postmeta` ON (
(
`wptt_posts`.`ID` = `wptt_postmeta`.`post_id`
)
)
)
WHERE
(
(
`wptt_posts`.`post_type` = 'product'
)
AND (
`wptt_postmeta`.`meta_key` = '_sku'
)
)
ORDER BY
`wptt_postmeta`.`meta_value`
创建另一个查询:
Products_List
答案 2 :(得分:0)
另一种不使用NOT IN的可能性:
SELECT p.ID, p.post_title
FROM `wp_posts` as p LEFT OUTER JOIN wp_postmeta pm ON (p.ID=pm.post_id AND pm.meta_key = '_thumbnail_id')
WHERE p.post_type = 'product'
AND
(meta_key IS NULL OR meta_value = "")
答案 3 :(得分:0)
可以用 sku 吗? (没有唯一的id)
SELECT p.ID, p.post_title
FROM `wp_posts` as p
LEFT OUTER JOIN wp_postmeta pm
ON (p.ID=pm.post_id AND pm.meta_key = '_thumbnail_id')
WHERE
p.post_type = 'product'
AND (meta_key IS NULL OR meta_value = "")