質問編集履歴
2
想定取得データを追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -8,6 +8,7 @@
|
|
8
8
|
・テーブルB の meta_keyに延長期限が設定されていれば、その値が現在日時以前のもの
|
9
9
|
・テーブルB の meta_keyに延長期限が設定されていないか、または空白の場合は、meta_key=有効期限の値が現在日時以前のもの
|
10
10
|
|
11
|
+
サンプルデータでいうと、post_idの1,2,3が取得される想定です。
|
11
12
|
|
12
13
|
上記に当てはまる条件式でSQLを書こうとしたのですが、JOINのON句の中で条件式を書こうとすると、meta_valueの指定でおかしくなっているようで取得できません。
|
13
14
|
何か良い方法はないでしょうか。
|
1
create文の追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -26,3 +26,46 @@
|
|
26
26
|
ORDER BY
|
27
27
|
pm.meta_value
|
28
28
|
```
|
29
|
+
|
30
|
+
|
31
|
+
【追記】
|
32
|
+
サンプルデータのcreate文を記載します。
|
33
|
+
```ここに言語を入力
|
34
|
+
|
35
|
+
SET NAMES utf8;
|
36
|
+
SET time_zone = '+00:00';
|
37
|
+
SET foreign_key_checks = 0;
|
38
|
+
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
|
39
|
+
|
40
|
+
DROP TABLE IF EXISTS `wp_postmeta`;
|
41
|
+
CREATE TABLE `wp_postmeta` (
|
42
|
+
`meta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
43
|
+
`post_id` bigint(20) unsigned NOT NULL DEFAULT '0',
|
44
|
+
`meta_key` varchar(255) DEFAULT NULL,
|
45
|
+
`meta_value` longtext,
|
46
|
+
PRIMARY KEY (`meta_id`),
|
47
|
+
KEY `post_id` (`post_id`),
|
48
|
+
KEY `meta_key` (`meta_key`(191))
|
49
|
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
50
|
+
|
51
|
+
INSERT INTO `wp_postmeta` (`meta_id`, `post_id`, `meta_key`, `meta_value`) VALUES
|
52
|
+
(1, 1, '有効期限', '2000-01-01'),
|
53
|
+
(2, 1, '延長期限', '2023-01-01'),
|
54
|
+
(3, 2, '有効期限', '2023-01-01'),
|
55
|
+
(4, 3, '有効期限', '2023-01-01'),
|
56
|
+
(5, 3, '延長期限', ''),
|
57
|
+
(6, 4, '有効期限', '2000-01-01');
|
58
|
+
|
59
|
+
DROP TABLE IF EXISTS `wp_posts`;
|
60
|
+
CREATE TABLE `wp_posts` (
|
61
|
+
`ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
62
|
+
`post_status` varchar(20) NOT NULL DEFAULT 'publish',
|
63
|
+
PRIMARY KEY (`ID`),
|
64
|
+
KEY `type_status_date` (`post_status`,`ID`)
|
65
|
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
66
|
+
|
67
|
+
```
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
|