MySQL поиск с объединениями и соответствием

У меня есть одна таблица, заполненная информацией о компаниях (tblforetag) в Швеции, одна таблица с провинциями (tbllan) и одна таблица с городами (tblstad). Города связаны с провинциями с помощью идентификационных номеров, а в таблице компаний есть столбец с названием города (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();

2 ответа

Я не знаю структуру вашей таблицы, но что-то в этом роде поможет:

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'

Это даст вам компании в этом конкретном регионе.

Я думаю, что было бы лучше столбца 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
Другие вопросы по тегам