Hier ist mein nehmen traditionelle Join-Syntax verwendet:
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')
Die rocks.id = rocks_types.id
funktioniert die Verbindung zwischen den beiden Tabellen.
Hier ist, wie Sie die gleiche Abfrage INNER JOIN
mit schreiben kann (beide führt zum gleichen Ergebnis)
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')
EDIT: Basierend auf Ihren Kommentar, der folgende wird Ihnen eine durch Kommata getrennte Liste von Typen :
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
Dann sollte Ihr Titel etwas wie „Getting eine Liste von Typen mit jeder ID in SQL zugeordnet“ – random