MySQL - 查询临时表以从表

时间:2015-10-06 21:12:55

标签: php mysql

感谢您抽出宝贵时间阅读我的问题。

我正在尝试将两个表中的数据组合在一起,以便可以使用PHP在网页上显示 - 我正在使用WordPress站点,因此表结构可能看起来很熟悉。

表格布局:

wp_3bpf9a_posts - 这个表每个'post'有1行,我需要这个表,所以我可以查询特定类型的帖子,并获取日期。

wp_3bpf9a_postmeta - 每个帖子都有许多记录的表格(有一个ID将两者连接在一起)。我实际上需要每个ID的2(多个)行的数据来完成我正在寻找的显示数据集。

我试图通过在两个表之间创建连接第一条记录的临时表来实现这一点,然后我将返回并将临时表连接到我需要的第二条记录。我实际上使用Toad连接到MySQL DB,并且当我按顺序一次运行下面的每个语句时,得到下面的代码。当我尝试运行整个事情时,我没有得到错误但也没有得到任何结果,当我在我的PHP页面上尝试时也是如此。我知道有一种更简单的方法可以做到这一点,但这是我从简单的MySQL查询中迈出的第一步。我们将非常感谢您提供的任何指导,谢谢!

DROP TABLE IF EXISTS bookingTempTable;

CREATE TEMPORARY TABLE bookingTempTable AS
SELECT ID, post_title, post_name, meta_value
FROM  `wp_3bpf9a_posts` 
    INNER JOIN `wp_3bpf9a_postmeta` ON `wp_3bpf9a_postmeta`.`post_id`=`wp_3bpf9a_posts`.`ID` 
    WHERE  `post_type` LIKE  'booked_appointments' AND `post_title` LIKE '%October 9%' AND `wp_3bpf9a_postmeta`.`meta_key` LIKE 'slot_members';

SELECT *
FROM `wp_3bpf9a_postmeta`
    INNER JOIN `bookingTempTable` ON `bookingTempTable`.`ID`=`wp_3bpf9a_postmeta`.`post_id` 
    WHERE `wp_3bpf9a_postmeta`.`meta_key` LIKE '_appointment_timeslot'
    ORDER by `wp_3bpf9a_postmeta`.`meta_value` ASC;

1 个答案:

答案 0 :(得分:1)

您不需要临时表,只需加入wp_sbpf9a_postmeta两次。

SELECT p.*, m1.meta_value AS slot_member, m2.meta_value AS appointment_timeslot
FROM wp_sbpf9a_posts AS p
JOIN wp_3bpf9a_postmeta AS m1 ON p.id = m1.post_id
JOIN wp_sbpf9a_postmeta AS m2 ON p.id = m2.post_id
WHERE p.post_type = 'booked_appointments'
    AND p.post_title LIKE '%October 9%'
    AND m1.meta_key = 'slot_members'
    AND m2.meta_key = '_appointment_timeslot'
ORDER BY appointment_timeslot