Mysql 在多个表中搜索

Mysql 在多个表中搜索,mysql,sql,join,Mysql,Sql,Join,我有树状表格-表格1,表格2和表格3。它们的结构是这样的: table1 = id | data 1 | x 2 | y table2 = id | table1_id | table3_id | data 1 | 1 | 1 | a 2 | 2 | 2 | b 3 | 1 | 3 | c

我有树状表格-
表格1
表格2
表格3
。它们的结构是这样的:

table1 = id | data
          1 | x
          2 | y

table2 = id | table1_id | table3_id | data
          1 | 1         | 1         | a
          2 | 2         | 2         | b
          3 | 1         | 3         | c
          4 | 2         | 3         | d

table3 = id | data
          1 | e
          2 | f
          3 | g
现在我想通过
table3.data
(使用LIKE)搜索并获得相关的table1数据。SQL应该是什么样子

例如:

在我的web应用程序中,我键入“g”-因此我将查看
table3
a返回ID=3,在
table2
中有两行
table3\u ID
=3,我想要得到的结果是所有行
table1.ID=table2.table1\u ID
so的集合

id | table3.data
 1 | g
 2 | g

当然,你不需要像那样使用
,你需要做一个简单的
JOIN
任务,
LIKE
用于部分字符串比较->
像“%Fu%”这样的“完整字符串”

试试这个:

SELECT t1.id as t1_id,t3.data as t3_data
FROM table3 t3
INNER JOIN table2 t2
 ON(t3.id = t2.table3_id)
INNER JOIN table1 t1
 ON(t2.table1_id = t1.id)

用你想要达到的目标的例子编辑你的问题。为什么你想使用LIKE?抱歉,对于LIKE-它可能会让人困惑,“data”列包含一个字符串,我想按所有子字符串进行搜索。这个问题非常让人困惑。首先说“并获取相关的table1数据”,但在示例输出中没有table1数据。而且你需要什么样的东西一点也不清楚。如果键入“g”,是否要从表3中选择数据中包含字母“g”的所有行?或者你的意思是,如果你键入“fg”,你想从表3中选择数据值为“f”或“g”的行?抱歉,没有那么准确-但我想理解我的问题并不难。但为了确保这一点,我想从tabl3中搜索数据列中包含“g”的所有行,然后从TABL1中选择相关行。这是一个普通的网站搜索机制。。。但我有一个奇怪的数据库结构。:)使用“表1”中的选择是否可以做到这一点?如果我理解正确,请尝试更新的查询@sukovanejt此SQL从表3中选择并连接表2和表1。我需要在表1上选择并连接表2和表3…?@sukovanej这是完全相同的事情:)这样想->
1+2+3
equals
3+2+1
这是连接的正确语法(与逗号分隔的连接相反,然后使用where子句)。这是一样的,你应该习惯用写的方式来写。为了澄清,关于
条款的
均等于
,其中t3.id=t2.table3\u id和t2.table1\u id=t1.id
@sukovanej