Mysql 带JOIN的SQL-WHERE子句

Mysql 带JOIN的SQL-WHERE子句,mysql,sql,Mysql,Sql,我需要扩展此查询以包括类似于“AND user='$user'的内容,但其中同时选中了'a'和'b'表 我可以做“和a.user='$user'和b.user='$user',但我将再添加18个表,所以这看起来有点臃肿 有什么方法可以使事情更加紧凑吗?您只需要检查一个表上的用户名,而不是同时检查两个表上的用户名,因为使用用户id的内部连接已经匹配了它们 老实说,表b实际上不应该有用户字段,而是应该有user\u id字段(这被认为是标准化的) 然后,内部联接将只返回两个表中都匹配的数据。因此,将

我需要扩展此查询以包括类似于“AND user='$user'的
内容,但其中同时选中了
'a'和'b'

我可以做
“和a.user='$user'和b.user='$user'
,但我将再添加18个表,所以这看起来有点臃肿


有什么方法可以使事情更加紧凑吗?

您只需要检查一个表上的用户名,而不是同时检查两个表上的用户名,因为使用
用户id的
内部连接已经匹配了它们

老实说,表b实际上不应该有用户字段,而是应该有
user\u id
字段(这被认为是标准化的)


然后,
内部联接将只返回两个表中都匹配的数据。因此,将Table
a.user\u id
连接到Table
b.user\u id
确保他们都有一个匹配的
user\u id

您将不得不解释“我将再添加18个表”部分……附议。什么18张桌子?它们的结构不一样,是吗?如果他们这样做,您的设计可以得到改进。您应该只需要检查一个表上的用户名,而不是同时检查两个表上的用户名,因为使用
用户id
内部连接已经匹配了它们。我建议您使用一些示例数据创建一个数据库模型,以便我们可以更好地建议您目前有两个表再加上16个,它们都有不同的结构
mysql_query("SELECT a.about,a.user,b.user,b.title,b.article,b.description  
FROM about a 
JOIN articles b ON b.user_id=a.user_id
WHERE MATCH(b.title,b.article) AGAINST ('$search')
");