2014-05-06 31 views
0

我在寫一個查詢以在一個對象中返回一個帖子ID和一個時間戳。我有帖子ID和時間戳返回,但時間戳鍵是post_id,它應該是時間戳。另外,它將它作爲單個項目存儲在數組中,並且我希望將它與post_id結合使用。這是我的SQL語句:以錯誤格式返回的SQL語句

$meta_key = '_birs_client_id'; 
    $meta_value = $client_id[0]->post_id; 
    $adjusted_time = strtotime("+1 day"); 
    $timestamp_meta_key = '_birs_appointment_timestamp'; 

    $sql = "SELECT post_id FROM wp_habitera_postmeta WHERE meta_key = %s AND meta_value = %d 
    UNION 
    SELECT meta_value FROM wp_habitera_postmeta WHERE meta_key = %s"; 
    $appointments = $wpdb->get_results($wpdb->prepare($sql, $meta_key, $meta_value, $timestamp_meta_key));  

這裏是我的迴歸從SQL語句的例子集:

[19] => stdClass Object 
    (
     [post_id] => 996 
    ) 

[20] => stdClass Object 
    (
     [post_id] => 999 
    ) 

[21] => stdClass Object 
    (
     [post_id] => 1002 
    ) 

[22] => stdClass Object 
    (
     [post_id] => 1398370500 
    ) 

[23] => stdClass Object 
    (
     [post_id] => 1398284100 
    ) 

[24] => stdClass Object 
    (
     [post_id] => 1398196800 
    ) 

這是我想要得到的格式爲:

[18] => stdClass Object 
    (
     [post_id] => 993 
     [timestamp] => 1398370500 
    ) 

燦有人告訴我如何使用這種格式?

編輯

這裏是我與合作應該有助於澄清數據庫的圖片:

http://i59.tinypic.com/10sgml3.png

2行,我感興趣的是時間戳和預約ID。時間戳列「1000」之前的列是與帖子ID列「1000」之後的列再次匹配的帖子ID。

+0

會如何你想要合併?你如何知道'post_id'與哪個'timestamp'匹配?據我所知,它們之間沒有任何關係,甚至沒有任何保證你會擁有與post_ids一樣多的時間戳。 – GolezTrol

+0

post_id確實與錯誤列中的時間戳匹配。我用圖像編輯帖子以幫助可視化問題。 – user3455992

+0

圖片幫助,但它會幫助更多的http://sqlfiddle.com的sqlfiddle – Chococroc

回答

0

編輯>我最後的回答是垃圾,編輯試圖回答這個問題。

UNION不會幫助您解決問題:從DDBB檢索的所有值都連接在一起,第一個查詢將檢索字段post的值,第二個值爲timestamp,但與你要讓MySQL把它們放在同一個領域。你需要做的是JOIN這個表格本身就是爲了獲得你想要的值作爲不同的字段,但爲此你需要建立行之間的關係。我不能說什麼是不知道你的表,它的數據結構的關係,但如果你寫的有關規則,下面的查詢,你會得到你想要查詢:

SELECT post_id, meta_value as timestamp 
FROM wp_habitera_postmeta wphp1 
INNER JOIN wp_habitera_postmeta wphp2 
ON (RELATION_RULE_BETWEEN_ROWS_ON_YOUR_TABLE) 
WHERE meta_value = %d 
+0

選擇POST_ID FROM wp_habitera_postmeta WHERE meta_key =%s和meta_value =%d - 這是POST_ID SELECT meta_value FROM wp_habitera_postmeta WHERE meta_key = %s - 這是時間戳。 – user3455992

+0

加入是解決方案,有一點欺騙這個我得到它的工作。謝謝 – user3455992