2015-10-06 41 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