質問するログイン新規登録

質問編集履歴

2

目標とする検索窓の例を追加しました。

2021/04/22 07:49

投稿

hmom
hmom

スコア3

title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,8 @@
1
1
  ###やりたいこと
2
2
  PHP、MySQLで検索機能を作成中です。
3
+
4
+ google等の検索窓のように、検索ワードをスペースで複数入力し検索するカタチを目指しています。
5
+
3
6
  二つのテーブルを結合して、複数カラムのどちらかに含まれる複数の検索ワード(AND検索)を照会する検索機能を実装したいと考えています。
4
7
 
5
8
  テーブル結合のうえ、複数ワードの検索機能は実装できたのですが、複数カラムに跨った検索が思うように実装できません。

1

テーブル構造と必要なカラムの内容、取得したいデータの具体例を追記しました。

2021/04/22 07:49

投稿

hmom
hmom

スコア3

title CHANGED
File without changes
body CHANGED
@@ -4,8 +4,51 @@
4
4
 
5
5
  テーブル結合のうえ、複数ワードの検索機能は実装できたのですが、複数カラムに跨った検索が思うように実装できません。
6
6
 
7
+ 例えば、下記のカラムの内容で「アカ テスト」と検索したときに、nameがアカでmessageにテストが含まれるpost_id1~3を取得したいです。
8
+
7
9
  初学者のため、質問の仕方等、的を得ていない部分もあると思いますが、教えていただけると嬉しいです。
8
10
 
11
+ ###テーブル構造とカラム
12
+ テーブル構造
13
+ テーブル Members
14
+ +-------------------+--------------+------+-----+-------------------+-----------------------------------------------+
15
+ | Field | Type | Null | Key | Default | Extra |
16
+ +-------------------+--------------+------+-----+-------------------+-----------------------------------------------+
17
+ | member_id | int | NO | PRI | NULL | auto_increment |
18
+ | name | varchar(255) | NO | | NULL | |
19
+ | email | varchar(255) | NO | | NULL | |
20
+ | password | varchar(100) | NO | | NULL | |
21
+ | icon | varchar(100) | YES | | NULL | |
22
+ | member_created_at | datetime | NO | | CURRENT_TIMESTAMP | DEFAULT_GENERATED |
23
+ | member_update_at | datetime | NO | | CURRENT_TIMESTAMP | DEFAULT_GENERATED on update CURRENT_TIMESTAMP |
24
+ +-------------------+--------------+------+-----+-------------------+-----------------------------------------------+
25
+
26
+ テーブル Post
27
+ +-----------+--------------+------+-----+-------------------+-------------------+
28
+ | Field | Type | Null | Key | Default | Extra |
29
+ +-----------+--------------+------+-----+-------------------+-------------------+
30
+ | post_id | int | NO | PRI | NULL | auto_increment |
31
+ | member_id | int | NO | | NULL | |
32
+ | message | varchar(560) | NO | | NULL | |
33
+ | post_date | datetime | NO | | CURRENT_TIMESTAMP | DEFAULT_GENERATED |
34
+ +-----------+--------------+------+-----+-------------------+-------------------+
35
+
36
+ カラムの中身
37
+ PostテーブルとMembersテーブルを結合しカラムpost_id,name,messageを取得しました。
38
+ mysql> SELECT post_id,name,message FROM Post LEFT OUTER JOIN Members ON Post.member_id = Members.member_id;
39
+ +---------+--------+---------------------------------------------------+
40
+ | post_id | name | message |
41
+ +---------+--------+---------------------------------------------------+
42
+ | 1 | アカ | テスト文1 |
43
+ | 2 | アカ | テスト文2 |
44
+ | 3 | アカ | テスト文3 |
45
+ | 4 | アカ | 文1 |
46
+ | 5 | ao | aoの文1 |
47
+ | 6 | pink | pinkのテスト 文 1<br>555<br>333<br>桃 |
48
+ | 7 | pink | ピンク test 2<br><br>文章 |
49
+ +---------+--------+---------------------------------------------------+
50
+
51
+
9
52
  ####考えている構造
10
53
 
11
54
  カラムをORで繋ぎ、繋いだ物をANDで絞り込みすることで実装できると考えました