0

我有一张包含瑞典公司信息 (tblforetag) 的表格,一张包含省份 (tbllan) 的表格和一张包含城市 (tblstad) 的表格。城市通过 ID 号链接到省份,并且公司表有一个城市名称 (varchar) 列。

如何搜索一个省的所有公司?

我摆弄了连接,但没有让它工作。我现在有这个代码,但它只会搜索公司名称和城市(在公司表中):

$sql = "
    SELECT *, 
    MATCH(tblforetag.foretag) AGAINST(:keywords) AS kr
    FROM tblforetag
    WHERE MATCH(tblforetag.foretag) AGAINST(:keywords)
    ";
$sql .= $locisset ? "AND tblforetag.stad LIKE :location" : "";
$sql .= " LIMIT $offset, $rpp"; 
$query = $conn->Prepare($sql);
$query->BindValue(':keywords', $keywords);
if($locisset) $query->BindValue(':location', "%$location%");
$query->Execute();
4

2 回答 2

0

我不知道你的表结构,但这些方面的东西应该可以解决问题:

SELECT FROM companies 
LEFT JOIN cities ON (companies.city_id = cities.id)
LEFT JOIN regions ON (cities.region_id = regions.id)
WHERE region.name = 'your region'

这将为您提供该特定地区的公司。

于 2013-01-17T11:46:27.687 回答
0

我认为将公司表中的 city_name 列改为 city_id 会更好。

SELECT a.*, p.provincename
FROM   companies a, cities c, provinces p
WHERE a.city_name = c.city_name
AND      c.city_id = p.city_id
AND      p.province_id = 5 // give your province id here
于 2013-01-17T12:26:14.083 回答