SQL语句以错误的格式返回

时间:2014-05-06 21:48:00

标签: mysql sql

我正在编写一个查询来在一个对象中返回一个帖子ID和一个时间戳。我有帖子ID和时间戳返回,但时间戳键是post_id,它应该是时间戳。此外,它将它作为单个项目存储在数组中,我希望它与post_id结合使用。这是我的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”之前的列是与post id列“1000”之后的列匹配的post id。

1 个答案:

答案 0 :(得分:0)

编辑> 我的最后一个答案是垃圾,经过编辑以试图回答这个问题。

UNION不会帮助您解决问题:从DDBB检索的所有值都连接在一起,第一个查询将检索字段post的值,第二个查询将检索值{ timestamp,但是使用UNION,你告诉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