我正在编写一个查询来在一个对象中返回一个帖子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。
答案 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