質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

1回答

985閲覧

MySQLで、Join Table 文字列結合によるLike句

KenTse

総合スコア24

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2019/08/01 02:01

私は3のテーブルがあります。
リレーション tbl_id で JoinしたcustomerとJobテーブルの中にあるaddress文字列結合によるLike句を作成したいと思います。
https://teratail.com/questions/12203
これで参考にしたみましたが、何故か上手く作成出来ない。単一のテーブル文字列結合によるLike句は出来ています。

テーブル'tbl_id' 

column
id
customer_id
job_id

テーブル'tbl_customer'

column
id
cus_name
cus_address1
cus_address2
cus_address3

テーブル'tbl_job'

column
id
job_name
job_address1
job_address2
job_address3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/08/01 02:08

今できているコード、またやってみたけどできていなかったコードとその現象を追記してください。 また、DBに関連する場合、テーブル定義が結構重要です。 CREATE TABLE文とサンプルデータのINSERT文をご提示ください。
Orlofsky

2019/08/01 02:09

> 何故か上手く作成出来ない。単一のテーブル文字列結合によるLike句は出来ています。 その、上手く作成できていないSQLやエラーメッセージも質問に追記しては? テーブル定義はCREATE TABLE に修正してください。
sazi

2019/08/01 04:13

テーブルの関係ではどの方向のlikeですか? また、address1同士なのか総当たりなのかも不明です。
guest

回答1

0

ベストアンサー

多分こんなことをしたいのでしょうけど

SQL

1select * from tbl_id as t1 2inner join tbl_customer as t2 on t1.customer_id=t2.id 3inner join tbl_job as t3 on t1.job_id=t3.id

どこからLIKEを使おうという発想になったかちょっとわかりません

投稿2019/08/01 04:30

yambejp

総合スコア114839

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KenTse

2019/08/01 04:45

yambejpさん ご回答ありがとうございます。 でもこれだけならただのJOINになります joinしたテーブルの上 で文字列結合によるLike句の条件付したいと思います。 結合するのはjob と customerのテーブル中にあるaddressです。 で、単一のテーブルでLike句の条件付は問題ない。以下の通りに SELECT * from tbl_job WHERE ( concat( job_address1, job_address2, job_address3) like '%word%' ); でもjoinの上では何故か上手く作成出来ない。 >> 今のcode select * from tbl_id as t1 inner join tbl_customer as t2 on t1.customer_id=t2.id inner join tbl_job as t3 on t1.job_id=t3.id WHERE ( concat( t3.job_address1, t3.job_address2, t3.job_address3) like '%word%' ) or ( concat( t2.cus_address1, t2.cus_address2, t2.cus_address3) like '%word%' );
yambejp

2019/08/01 05:05 編集

joinのonにwhereで書いた条件をandでつないでみてください たとえば・・・ select * from tbl_id as t1 inner join tbl_customer as t2 on t1.customer_id=t2.id and concat( t2.cus_address1, t2.cus_address2, t2.cus_address3) like '%word%' inner join tbl_job as t3 on t1.job_id=t3.id and concat( t3.job_address1, t3.job_address2, t3.job_address3) like '%word%' (ただし未検証)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問