Tôi có ba bảng.sử dụng nơi và tham gia bên trong trong mysql
địa điểm
ID | NAME | TYPE |
1 | add1 | stat |
2 | add2 | coun |
3 | add3 | coun |
4 | add4 | coun |
5 | add5 | stat |
trường
ID | NAME
1 | sch1
2 | sch2
3 |sch3
school_locations
ID |LOCATIONS_ID |SCHOOL_ID
1 | 1 |1
2 | 2 |2
3 | 3 |3
Dưới đây bảng loc hành tây chứa tất cả các vị trí của ứng dụng.Locations cho trường được gọi bằng ID.
khi tôi sử dụng truy vấn
select locations.name from locations where type="coun";
nó sẽ hiển thị tên với loại "nước có tỷ lệ"
Nhưng tôi muốn hiển thị locations.name nơi chỉ school_locations có type = "coun"
i đã thử các truy vấn sau đây, nhưng dường như không có hoạt động nào
select locations.name
from locations
where type="coun"
inner join school_locations
on locations.id=school_locations.location_id
inner join schools
on school_locations.school.id=schools.id;
và
select locations.name
from locations
inner join school_locations
on locations.id=school_locations.location_id
inner join schools
on school_locations.school.id=schools.id where type="coun";
có thể sử dụng nhiều kết nối bên trong trong truy vấn hoặc có cách nào khác không?
được backticks cần thiết trong msql? –
không, nhưng tôi thích có chúng ở đó, nó tránh được các vấn đề với các tên bảng hoặc cột lạ (ví dụ như chọn, đếm, a% b, v.v.) và cũng dễ hiểu hơn – knittl
Thật không may, làm cho truy vấn không tuân thủ ANSI , có khả năng gây ra vấn đề nếu bạn cố di chuyển truy vấn đến cơ sở dữ liệu khác. Cách đúng đắn của việc phân định các định danh là với "doublequotes", nhưng MySQL không hỗ trợ điều này theo mặc định; bạn phải đặt ANSI_QUOTES trong SQL_MODE để nhận được điều đó. Tất nhiên sau đó messes lên chuỗi chữ "coun" của bạn, mà nên bất kể SQL_MODE được viết với dấu nháy đơn. – bobince