Reputation: 1058
Im in deeps waters at the moment, stressed out cause of deadline and frustration over lack of knowledge.
So i'll ask for desperate help.
This is more mysql question but since im working currently with WP ill demonstrate scenario from wp.
I hade posts with post type of "chatt" where each post has its meta that is cruicial. One of the Metas is a timestamp and another is a id for chats.
I need to get all posts with given ID (from meta_value) and where timestamp value is GREATER than the given value.
I got this so far, but im struggling to get this to work :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
Anyone who know how to solve this ?
(Basically, get all posts where post_type = chatt AND meta_value = 'test-chat-av-chattuser' AND meta_value > 2)
EDIT: structure
Here is how it looks like in 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
And this is how the wp_posts look like:
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
Upvotes: 0
Views: 194
Reputation: 14959
Unless you want NULL values to be included, LEFT JOIN is unecessary.
Based on your last sentence and comment:
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'
Upvotes: 1