Вот мой пример использования традиционного синтаксиса соединения:
SELECT rocks.name,
rocks.latitude,
rocks.longitude,
rocks.indoor,
rocks.address,
rocks.phone,
rocks.email,
rocks.website,
rocks.closed,
rock_types.type
FROM rocks,
rock_types
WHERE rocks.latitude > -180 AND
rocks.latitude < 180 AND
rocks.longitude > -180 AND
rocks.longitude < 180 AND
rocks.type_id = rocks_types.id AND
rock_types.type IN ('DWS', 'Top rope')
rocks.id = rocks_types.id
связывает обе таблицы.
Вот как вы можете написать один и тот же запрос, используя INNER JOIN
(оба приводят к одному и тому же результату)
SELECT rocks.name,
rocks.latitude,
rocks.longitude,
rocks.indoor,
rocks.address,
rocks.phone,
rocks.email,
rocks.website,
rocks.closed,
rock_types.type
FROM rocks
INNER JOIN rocks_types ON rocks.type_id = rocks_types.id
WHERE rocks.latitude > -180 AND
rocks.latitude < 180 AND
rocks.longitude > -180 AND
rocks.longitude < 180 AND
rock_types.type IN ('DWS', 'Top rope')
РЕДАКТИРОВАТЬ : Исходя из вашего комментария, следующий список даст вам разделенный запятыми список типов:
SELECT rocks.name,
rocks.latitude,
rocks.longitude,
rocks.indoor,
rocks.address,
rocks.phone,
rocks.email,
rocks.website,
rocks.closed,
(SELECT GROUP_CONCAT(DISTINCT rock_types.type SEPARATOR ',')
FROM rock_types
WHERE rock_types.id = rocks.id AND
rock_types.type IN ('DWS', 'Top rope')
GROUP BY rock_types.id
) AS type
FROM rocks
WHERE rocks.latitude > -180 AND
rocks.latitude < 180 AND
rocks.longitude > -180 AND
rocks.longitude < 180