質問編集履歴

2

想定取得データを追記

2022/12/07 05:38

投稿

Anon_
Anon_

スコア334

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文の追記

2022/12/07 05:36

投稿

Anon_
Anon_

スコア334

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
+