php - 如何将多个元键作为列运行 SQL 查询,并将它们的值作为行运行?

标签 php mysql sql wordpress

在 phpMyAdmin 中,我正在使用 WordPress 中的自定义元字段。

假设我有 3 个字段的自定义元 - 地址、纬度、经度,并希望运行 SQL 查询以仅显示这 3 列及其值如下行。

我只能弄清楚如何让其中一列显示,它是通过运行以下命令显示的数据:

SELECT DISTINCT wp_postmeta.meta_value AS address
FROM wp_postmeta, wp_posts
WHERE post_type = ‘dealers’
AND wp_postmeta.meta_key = ‘_dealer_address’

有人能告诉我如何运行查询以包含所有 3 列吗?

我想做的是模仿这个表的设置:http://code.google.com/apis/maps/articles/phpsqlsearch_v3.html#outputxml

因为我有一个自定义帖子类型(经销商),使用您的自定义元数据框来获取纬度和经度。

您的 SQL 查询在 phpMyAdmin 中测试得很好并且看起来与我的其他手动创建的测试经销商表相同,但是当我尝试替换 PHP 中的谷歌地图示例查询时 - 这是不行的。

您认为查询太复杂了吗?

这是在不使用 wordpress 自定义帖子的情况下工作的测试查询:

$query = sprintf("SELECT address, name, lat, lng, ( 3959 * acos( cos( radians('%s') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < '%s' ORDER BY distance LIMIT 0 , 20",

最佳答案

一定要远离 distinct。 99% 的情况下,这是出现问题的迹象(架构或您对架构的理解)。

我认为 Cheluis 的建议可能不会将经纬度与地址相关联。

我没有可玩的 wordpress 安装。我真的希望有一个主键(比如 post_id)。在您的原始示例中,您没有使用它来将两个表连接在一起,这可能就是您使用 distinct 的原因。

如果这个id存在,你可以多次加入回wp_postmeta表,例如

SELECT meta1.meta_value AS address, meta2.meta_value as latitude, meta3.meta_value as longitude
FROM wp_posts posts, wp_postmeta meta1, wp_postmeta meta2, wp_postmeta meta3
WHERE posts.post_id = meta1.post_id
AND posts.post_type = ‘dealers’
AND meta1.meta_key = ‘_dealer_address’
AND posts.post_id = meta2.post_id
AND posts.post_type = ‘dealers’
AND meta1.meta_key = ‘_dealer_latitude’
AND posts.post_id = meta3.post_id
AND posts.post_type = ‘dealers’
AND meta1.meta_key = ‘_dealer_longitude’

这假设每个经销商都具有所有三个属性。否则,您将需要切换到外部联接,这将使查询更加难看。

希望对您有所帮助。

关于php - 如何将多个元键作为列运行 SQL 查询,并将它们的值作为行运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5587992/

相关文章:

mysql - 从 SQL 中选择最佳结果

c# - 方法 "ToString"没有重载需要 1 个参数

sql - 从逗号分隔的 id 获取逗号分隔的文本

PHP + jQuery 同步问题

php - MySQL "less than"运算符没有带来正确的结果

javascript - jQuery PHP 将重复的行折叠成一个

javascript - AJAX 仅返回最后一个数组项

mysql - 无法为包含文件的表添加外键

php - 从文件服务器和MYSQL中选择匹配的照片?

sql - 此查询是否保证 'race free' PK 值?