MYSQL查询比较2个表值

时间:2012-05-22 11:27:18

标签: mysql wordpress-plugin

我现在处于深海水域,强调因缺乏知识而导致截止日期和挫败感。

所以我会请求绝望的帮助。

这是更多的mysql问题,但是因为我目前正在使用WP ill来演示来自wp的场景。

我喜欢帖子类型为“chatt”的帖子,其中每个帖子都有其主要的元素。 其中一个Metas是时间戳,另一个是聊天ID。

我需要获取具有给定ID的所有帖子(来自meta_value)以及时间戳值大于给定值的位置。

到目前为止,我得到了这个,但我正努力让这个工作:S

   SELECT wp_postmeta.*, 
          wp_posts.* 
     FROM wp_postmeta
LEFT JOIN wp_posts 
       ON wp_posts.ID = wp_postmeta.post_id 
          AND wp_posts.post_type = 'chatt'
LEFT JOIN wp_postmeta t2 
       ON t2.meta_key = 'aw_chat_id' 
          AND t2.meta_value = 'test-chat-av-chattuser'
    WHERE wp_postmeta.post_id = wp_posts.ID 
      AND t2.meta_key = 'aw_chat_timestamp' 
      AND t2.meta_value > 2

任何知道如何解决这个问题的人?

(基本上,获取所有帖子,其中post_type = chatt AND meta_value ='test-chat-av-chattuser'AND meta_value> 2)

编辑:结构

以下是wp_postmeta中的样子:

INSERT INTO `wp_postmeta` (`meta_id`, `post_id`, `meta_key`, `meta_value`)
VALUES
    (2212, 1458, 'aw_chat_id', 'test-chat-av-chattuser'),
    (2213, 1458, 'aw_chat_timestamp', '6'),
    (2209, 1457, 'aw_chat_id', 'test-chatt'),
    (2210, 1457, 'aw_chat_timestamp', '5'),
    (2207, 1456, 'aw_chat_id', 'test-chatt'),
    (2208, 1456, 'aw_chat_timestamp', '4'),
    (2205, 1455, 'aw_chat_id', 'test-chatt'),
    (2206, 1455, 'aw_chat_timestamp', '3'),
    (2202, 1454, 'aw_chat_id', 'test-chatt'),
    (2203, 1454, 'aw_chat_timestamp', '2'),
    (2204, 1454, 'aw_chat_answer', 'adfgsdhfgsdfhsfdh'),
    (2199, 1453, 'aw_chat_id', 'test-chatt'),
    (2200, 1453, 'aw_chat_timestamp', '1'),
    (2201, 1453, 'aw_chat_answer', 'asdfasdasdf');



meta_id post_id meta_key    meta_value
2212    1458    aw_chat_id  test-chat-av-chattuser
2213    1458    aw_chat_timestamp   6
2209    1457    aw_chat_id  test-chatt
2210    1457    aw_chat_timestamp   5
2207    1456    aw_chat_id  test-chatt
2208    1456    aw_chat_timestamp   4
2205    1455    aw_chat_id  test-chatt
2206    1455    aw_chat_timestamp   3
2202    1454    aw_chat_id  test-chatt
2203    1454    aw_chat_timestamp   2
2204    1454    aw_chat_answer  adfgsdhfgsdfhsfdh
2199    1453    aw_chat_id  test-chatt
2200    1453    aw_chat_timestamp   1
2201    1453    aw_chat_answer  asdfasdasdf

这就是wp_posts的样子:

INSERT INTO `wp_posts` (`ID`, `post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_title`, `post_excerpt`, `post_status`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_content_filtered`, `post_parent`, `guid`, `menu_order`, `post_type`, `post_mime_type`, `comment_count`)
VALUES
    (1458, 0, '2012-05-22 11:15:59', '0000-00-00 00:00:00', 'Chatuser chat !?', 'qwedq', '', 'draft', 'open', 'closed', '', '', '', '', '2012-05-22 11:15:59', '0000-00-00 00:00:00', '', 0, 'http://localhost/?post_type=chatt&p=1458', 0, 'chatt', '', 0),
    (1457, 18, '2012-05-22 10:51:27', '2012-05-22 09:51:27', 'asdgasdgfsdfg', 'asdgfasdg', '', 'publish', 'open', 'closed', '', 'asdgfasdg', '', '', '2012-05-22 10:51:27', '2012-05-22 09:51:27', '', 0, 'http://localhost/?post_type=chatt&p=1457', 0, 'chatt', '', 0),
    (1456, 1, '2012-05-22 10:48:13', '0000-00-00 00:00:00', 'sadfasdfasdfasdf', 'asdfasdfasdf', '', 'draft', 'open', 'closed', '', '', '', '', '2012-05-22 10:48:13', '0000-00-00 00:00:00', '', 0, 'http://localhost/?post_type=chatt&p=1456', 0, 'chatt', '', 0),
    (1455, 1, '2012-05-22 10:38:47', '2012-05-22 09:38:47', 'ghkjhlkhkjhkj', 'jhgfjhfjh', '', 'trash', 'open', 'closed', '', 'jhgfjhfjh', '', '', '2012-05-22 10:38:47', '2012-05-22 09:38:47', '', 0, 'http://localhost/?post_type=chatt&p=1455', 0, 'chatt', '', 0),
    (1454, 1, '2012-05-22 10:37:04', '2012-05-22 09:37:04', 'random text', 'awegfw', '', 'publish', 'open', 'closed', '', 'asdasd', '', '', '2012-05-22 10:37:04', '2012-05-22 09:37:04', '', 0, 'http://localhost/?post_type=chatt&p=1454', 0, 'chatt', '', 0),
    (1453, 1, '2012-05-22 01:27:02', '2012-05-22 00:27:02', 'asdfasdfasdf', 'asdfasdf', '', 'publish', 'open', 'closed', '', 'asdfasdf', '', '', '2012-05-22 01:27:02', '2012-05-22 00:27:02', '', 0, 'http://localhost/?post_type=chatt&p=1453', 0, 'chatt', '', 0);



    ID  post_author post_date   post_date_gmt   post_content    post_title  post_excerpt    post_status comment_status  ping_status post_password   post_name   to_ping pinged  post_modified   post_modified_gmt   post_content_filtered   post_parent guid    menu_order  post_type   post_mime_type  comment_count
1458    0   2012-05-22 11:15:59 0000-00-00 00:00:00 Chatuser chat !?    askwlfoef askwlfoef     draft   open    closed                  2012-05-22 11:15:59 0000-00-00 00:00:00     0   http://localhost/?post_type=chatt&p=1458    0   chatt       0
1457    18  2012-05-22 10:51:27 2012-05-22 09:51:27 asdgasdgfsdfg   asdgfasdg       publish open    closed      asdgfasdg           2012-05-22 10:51:27 2012-05-22 09:51:27     0   http://localhost/?post_type=chatt&p=1457   0   chatt       0
1456    1   2012-05-22 10:48:13 0000-00-00 00:00:00 sadfasdfasdfasdf    asdfasdfasdf        draft   open    closed                  2012-05-22 10:48:13 0000-00-00 00:00:00     0   http://localhost/?post_type=chatt&p=1456    0   chatt       0
1455    1   2012-05-22 10:38:47 2012-05-22 09:38:47 ghkjhlkhkjhkj   jhgfjhfjh       trash   open    closed      jhgfjhfjh           2012-05-22 10:38:47 2012-05-22 09:38:47     0   http://localhost/?post_type=chatt&p=1455   0   chatt       0
1454    1   2012-05-22 10:37:04 2012-05-22 09:37:04 asd2ewfefasdf   askwlfoef askwlfoef     publish open    closed      askwlfoef-askwlfoef         2012-05-22 10:37:04 2012-05-22 09:37:04     0   http://localhost/?post_type=chatt&p=1454   0   chatt       0
1453    1   2012-05-22 01:27:02 2012-05-22 00:27:02 asdfasdfasdf    asdfasdf        publish open    closed      asdfasdf            2012-05-22 01:27:02 2012-05-22 00:27:02     0   http://localhost/?post_type=chatt&p=1453   0   chatt       0

1 个答案:

答案 0 :(得分:1)

除非您想要包含NULL值,否则不需要LEFT JOIN。

根据您的上一句和评论:

    SELECT chat.*, 
           timestamp.*,
           wp_posts.* 
      FROM wp_posts
INNER JOIN wp_postmeta chat
        ON wp_posts.ID = chat.post_id 
           AND chat.meta_key = 'aw_chat_id'
INNER JOIN wp_postmeta timestamp
        ON wp_posts.ID = timestamp.post_id 
           AND timestamp.meta_key = 'aw_chat_timestamp'
     WHERE wp_posts.post_type = 'chatt'
       AND timestamp.meta_value > 2
       AND chat.meta_value = 'test-chat-av-chattuser'