0

私は現在深海にいて、締め切りの原因と知識不足に対するフラストレーションを強調しています。

だから私は必死の助けを求めます。

これはより多くのmysqlの質問ですが、現在WPで作業しているため、wpからのシナリオを示していません。

各投稿に重要なメタがある「チャット」の投稿タイプの投稿を作成しました。メタの 1 つはタイムスタンプで、もう 1 つはチャットの 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
4

1 に答える 1

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'
于 2012-05-22T11:37:36.730 に答える