バンド、ギグ、会場の 3 つのテーブルがあります。バンド名、バンドの出身地、会場名で検索できるようにしたい。私のテーブルがどのように見えるかについての一般的な考え方は次のとおりです。
バンド
ID | NAME | LOCATION
------|--------------|------------
1 | Spinal Tap | New York, NY
2 | Jimi Hendrix | Woodstock, PA
ギグ
ID | VENUE_ID | START_TIME | BAND_ID
------|----------------|------------------|--------------
1 | 1 | 1371171600 | 1
2 | 2 | 1371171600 | 1
3 | 1 | 1371171600 | 2
4 | 2 | 1371171600 | 1
会場
ID | NAME
------|---------------------
1 | Madison Square Garden
2 | Jefferson Round Garden
そのため、バンド名と場所で簡単に検索できます。何かのようなもの:
SELECT id,name,location
FROM bands
WHERE name LIKE '%$search_string%' OR location LIKE '%$search_string%'
ORDER BY name
会場名で検索できるようにしたい場合はどうすればよいですか? これが私の恐ろしく失敗した試みです:
SELECT bands.id,bands.name,bands.location,venues.name
FROM bands
WHERE name LIKE '%$search_string%' OR location LIKE '%$search_string%'
INNER JOIN gigs
ON bands.id=gigs.band_id
INNER JOIN venues
ON gigs.venue_id=venues.id
WHERE start_time>'$now'
ORDER BY bands.name
私は明らかに、この内部結合全体に慣れていません...