Mysql sql查询的国际化

Mysql sql查询的国际化,mysql,sql,internationalization,Mysql,Sql,Internationalization,我有以下SQL表: -- Create syntax for TABLE 'companies' CREATE TABLE `companies` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL DEFAULT '', `country` varchar(255) NOT NULL DEFAULT '', `city` varchar(255) NOT NULL DEFAU

我有以下SQL表:

-- Create syntax for TABLE 'companies'
CREATE TABLE `companies` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL DEFAULT '',
  `country` varchar(255) NOT NULL DEFAULT '',
  `city` varchar(255) NOT NULL DEFAULT '',
  `address` text NOT NULL,
  `logo` varchar(255) NOT NULL DEFAULT 'empty',
  `size` int(11) NOT NULL DEFAULT '32',
  PRIMARY KEY (`id`),
  KEY `city` (`city`),
  KEY `country` (`country`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;

-- Create syntax for TABLE 'i18n'
CREATE TABLE `i18n` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `lang` varchar(2) DEFAULT NULL,
  `word` text,
  `english` text,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

-- Create syntax for TABLE 'tags'
CREATE TABLE `tags` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` text,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;

-- Create syntax for TABLE 'tagsForCompany'
CREATE TABLE `tagsForCompany` (
  `company` int(11) DEFAULT NULL,
  `tid` int(11) unsigned NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
由于以下原因,我有以下sql查询:

我需要能够通过在i18n表中搜索翻译来搜索使用另一种语言编写的关键字的公司。因此,搜索餐厅将得到与搜索相同的结果レストラン 日本餐厅或意大利餐厅


老实说,我不知道在查询中编辑什么,我的SQL知识有点有限。

解决方案比我想象的要简单: 如果有人能改进,我会非常高兴

SELECT c.*
FROM i18n, (SELECT *
   FROM companies
   WHERE city = "<some city>" AND country = "<some country>") AS c
  INNER JOIN tagsForCompany AS tc ON c.id = tc.Company
  INNER JOIN tags AS t ON t.id = tc.TID
WHERE t.Name = i18n.`english` AND i18n.word REGEXP "<some word>" OR t.Name REGEXP "<the same word as before>"
但是为了做到这一点,我不得不把所有的表格都改成utf-8

SELECT c.*
FROM i18n, (SELECT *
   FROM companies
   WHERE city = "<some city>" AND country = "<some country>") AS c
  INNER JOIN tagsForCompany AS tc ON c.id = tc.Company
  INNER JOIN tags AS t ON t.id = tc.TID
WHERE t.Name = i18n.`english` AND i18n.word REGEXP "<some word>" OR t.Name REGEXP "<the same word as before>"