2014-03-31 67 views
0

我想使用PHP和MySQL與Wordpress作爲CMS的商店定位器。我正在使用Pods插件來創建自定義帖子。在那裏,我可以添加新的位置。對於每個點我插入經度和緯度。現在,隨着wordpress表的工作,這些值被添加爲表中的新行,其中meta_key是lat或lng,meta_value是該屬性的值。從Wordpress postmeta表中選擇3列與特定的鍵

有什麼辦法,可能使用嵌套查詢,以獲得在格式的數據:

| id | lat | lng |

來自數據的格式:

| id | post_id | meta_key | meta_value

我試圖用查詢:

SELECT la.id AS id, la.lat AS lat, ln.lng AS lng 
FROM (

    SELECT post_id AS id, meta_value AS lat 
    FROM `wp_postmeta` 
    WHERE `meta_key` LIKE 'lat' 
) AS la, (

    SELECT post_id AS id, meta_value AS lng 
    FROM `wp_postmeta` 
    WHERE `meta_key` LIKE 'lng' 
) AS ln 
GROUP BY id 

但它返回緯度,只有正確的價值觀只有一個每行中重複經度值。

回答

0

首先,你不想在MySQL中使用子查詢,當你可以避免它們。

同樣,你不需要聚合。相反,你需要一個join條件:

select lat.post_id, lat.meta_value as lat, lng.meta_value as lng 
from wp_postmeta lat join 
    wp_postmeta lng 
    on lat.post_id = lng.post_id and 
     lat.meta_key = 'lat' and 
     lng.meta_key = 'lng'; 
+0

哇,這真是太棒了。謝謝你的回答,我學到了一些新的有用的東西! – Kamil