2015-10-06 40 views
2

谢谢您花时间阅读我的问题。MySQL - 查询临时表以从表中检索2行

我想将2个表格中的数据以可以在PHP网页上呈现的方式进行组合 - 我使用的是WordPress网站,因此表格结构可能看起来很熟悉。

表布局:

wp_3bpf9a_posts - 此表有一行对每个“后”,我需要这个表,所以我可以查询特定类型的讯息,同时也获得了日期。

wp_3bpf9a_postmeta - 每个帖子有许多记录的表格(有一个将这两个链接在一起的ID)。实际上,我需要从每个ID的2(很多)行中获取数据,以完成我正在查找的显示数据集。

我试图通过创建一个临时表来连接两个表之间的第一条记录,然后我将返回并将临时表加入到我需要的第二条记录中。我实际上使用Toad连接到MySQL数据库,并且当我按顺序将每条语句按顺序依次运行到一个以下时,就可以获得下面的代码。当我尝试运行整个事情时,我没有遇到错误,但也没有得到任何结果,当我在我的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; 
+0

你的问题是什么? – grael

+0

对不起,我以为我已经复制了整个问题,但我只是抓住了SQL本身。 – Stokes860

+0

我想连接两个表(使用临时表),所以我可以从一个表中获取2条记录,并从一个数据集中的另一个表中获取1条记录。 – Stokes860

回答

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 
+0

工作很好!谢谢! – Stokes860