0

スウェーデンの企業に関する情報が入ったテーブル(tblforetag)、州が入ったテーブル(tbllan)、都市が入ったテーブル(tblstad)が1つずつあります。都市はID番号で州にリンクされており、companyテーブルには都市名(varchar)の列があります。

1つの州のすべての企業を検索するにはどうすればよいですか?

結合をいじりましたが、機能しませんでした。私は今このコードを持っていますが、それは(会社のテーブルで)会社名と都市のみを検索します:

$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

company テーブルの 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 に答える
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 に答える