Help setting up a sql query

时间:2013-12-11 作者:user715564

我需要列出包含关联自定义字段条目的特定自定义字段项。例如,自定义字段命名为“type”和“food”。我想列出所有的早餐食品。“早餐”是“类型”自定义字段,“培根”、“鸡蛋”、“饼干”是“食物”。现在,我有这个查询,但它列出了我需要的每种食物,而只列出了早餐类型。我是否需要在某处添加“WHERE meta\\u value=\'type\'和meta\\u key=\'breakfast\'”?我试过几个地方,都不管用。

<?php
    $metakey = \'type\';

    $stocktypes = $wpdb->get_col($wpdb->prepare("SELECT DISTINCT meta_value FROM $wpdb->postmeta WHERE meta_key = %s ORDER BY meta_value ASC", $metakey) );
    if ($stocktypes) {
        foreach ($stocktypes as $stocktype) {
            echo "<option value=\\"" . $stocktype . "\\">" . $stocktype . "</option>";
        }
    }
?> 

2 个回复
最合适的回答,由SO网友:Shazzad 整理而成

好的,如果我清楚地理解你,那么这就是解决方案

// first get the post ids that have the breakfast food type
$post_ids = $wpdb->get_col( "SELECT DISTINCT post_id FROM $wpdb->postmeta WHERE meta_key = \'type\' AND meta_value=\'Breakfast\'" );

// now get the food names
$stocktypes = $wpdb->get_col( "SELECT DISTINCT meta_value FROM $wpdb->postmeta WHERE meta_key = \'food\' AND post_id IN (". implode(\',\', array_map(\'absint\', $post_ids) ) .")" );


if ($stocktypes) {
    foreach ($stocktypes as $stocktype) {
        echo "<option value=\\"" . $stocktype . "\\">" . $stocktype . "</option>";
    }
}

SO网友:David

让我看看你说得对不对。试试这个:

SELECT m.meta_value FROM wp_postmeta m
    INNER JOIN
wp_postmeta k
    ON
m.post_id = k.post_id
WHERE m.meta_key = \'food\'
AND k.meta_key = \'type\' 
AND k.meta_value = \'breakfast\'
我不确定这是否是可伸缩的,您可以考虑使用之前建议的自定义分类法。

结束

相关推荐

WordPress数据库错误您的SQL语法有错误;请检查与您的MySQL服务器版本对应的手册

wordpress更新到3.5以上后,我发现这个插件有错误。我不知道如何修理它。如果有人能帮我解决这些问题,或者给我一个如何解决的例子以下是插件的完整代码:http://pastebin.com/pVUXjWat我得到的错误:WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right sy