0

私は2つのテーブルを持っています、最初に、このような別のテーブルのfkを取得するためにいくつかの検索を行う必要があります...

SELECT `related_table_id` 
FROM `table_a` 
WHERE `users_id` = '14' 
  AND `user_data_status` = 'n' 
  AND `another_table_name` = 'table_b'

次に、出力として多くのrelated_table_idがあります...そして%keyword%のようなコンテンツを検索する必要があります。したがって、次のような別のSQLをクエリする必要があります。

SELECT * 
FROM table_b 
WHERE (`table_b_id`='218' OR  `table_b_id`='219' OR  `table_b_id`='225') 
  AND `content` LIKE '%keyword%'

問題は、私のデータベースが大きくなり、table_bにtable_aからクエリできるデータがたくさんある可能性があるため、sqlステートメントが非常に長くなることです。これらの2つのステートメントを1つにまとめることはできますか?ありがとうございました/

4

2 に答える 2

4

INNER JOIN2つ以上のテーブルの行を「一致」させるために使用できます。

SELECT table_b.* 
FROM table_b 
INNER JOIN table_a
ON table_a.related_table_id = table_b.table_b_id
WHERE table_a.users_id = '14' 
  AND table_a.user_data_status = 'n' 
  AND table_a.another_table_name = 'table_b'
  AND table_b.content LIKE '%keyword%'
于 2011-05-15T14:32:02.740 に答える
3

ネストされたクエリを実行します。

SELECT * FROM table_b WHERE `table_b_id` IN (SELECT `related_table_id` FROM `table_a` WHERE `users_id` = '14' AND `user_data_status` = 'n' AND `another_table_name` = 'table_b') AND `content` LIKE '%keyword%'
于 2011-05-15T14:29:44.033 に答える