[SQL] MYSQL 쿼리가 동일한 열에 만족시키기
SQLMYSQL 쿼리가 동일한 열에 만족시키기
프로젝트 목표 :
우리는 사용자가 버스를 검색합니다 버스 타이밍 API를 개발하고있다.
다음은 내 테이블 구조입니다
나는 다음과 같은 테이블이
버스를
id | bus_name
테이블 설명 : 모든 버스의 이름을 저장
루트
id | route_name
테이블 설명 : 스토어 모든 도시 이름
정지
id | stop_name
테이블 설명 : 모든 정류장 이름
stop_orders
id | route_id | stop_id | stop_order
테이블에 대한 설명 : 여기에 내가 식별하기 위해 도시와 stop_order 열 도움 정지를 할당합니다 서로 옆에있는 정지
bus_timing
id | stop_order_id | bus_id | bus_timing | trip | trip_direction
테이블에 대한 설명 : 여기에 내가 경로에 대한 버스를 할당 시간과 여행 및 방향과 함께 중지
기대 출력 :
예를 들어 1시 0분 0초 12시 0분 0초에와 stop_18에 stop_8 사이의 사용자 검색은 시간에 모든 버스의 목록이 표시되어야합니다 두 정거장 후 상호 링크 버스 목록 사이의 여행에 거기에 직접 버스를 show.if해야하는 경우
나는이 무엇을 가지고 출력
PHP는 조건에 기초하여 연관 배열과 비교
현재 반환 결과의 문제는
업데이트 아직 답을 찾는 것은 이제 주어진 됐지 대답은 그래서 현상금을 제공하는 몇 가지 포인트가 있습니다
해결법
-
==============================
1.stop_id 동일한 행에 서로 다른 두 값되지 않을 수 있기 때문이다.
stop_id 동일한 행에 서로 다른 두 값되지 않을 수 있기 때문이다.
집계는 당신이 원하는 것을 할 수있는 한 방법입니다 :
SELECT b.bus_name FROM buses b JOIN route_connect rc ON rc.busid = b.id JOIN stops s ON s.id = rc.stop_id GROUP BY b.bus_name HAVING SUM( s.stop_name = 'Sydney' ) > 0 AND SUM( s.stop_name = 'Melbourne' ) > 0;
이 두 도시의 이름으로 정지이 버스를 반환합니다.
버스가 정류장을 많이 가질 수 있음을 감안할 때, 어떻게하는 것이 더 효율적이 될 수 있습니다
SELECT b.bus_name FROM buses b JOIN route_connect rc ON rc.busid = b.id JOIN stops s ON s.id = rc.stop_id WHERE s.stop_name in ('Sydney', 'Melbourne') GROUP BY b.bus_name HAVING COUNT(DISTINCT s.stop_name) = 2;
-
==============================
2.즉 문제 .. 그것을 위해, 당신은 더 나은 도구가 필요 라우팅라는 문제의 클래스에 엄청난 문제입니다 : 마이그레이션하거나 PostgreSQL을 통합하고, 검사 특별히 PgRouting 고려하면 가능성이 다 익스트라의 최단 경로를 할 것입니다. PostGIS와 확장 꼭대기 실행을 PgRouting.
즉 문제 .. 그것을 위해, 당신은 더 나은 도구가 필요 라우팅라는 문제의 클래스에 엄청난 문제입니다 : 마이그레이션하거나 PostgreSQL을 통합하고, 검사 특별히 PgRouting 고려하면 가능성이 다 익스트라의 최단 경로를 할 것입니다. PostGIS와 확장 꼭대기 실행을 PgRouting.
또는, Esri는과의 통합 작업을 고려.
또는 당신이 엉망의 주위를 할 수있는,하지만 난 그것을 조언하지 않을 것입니다.
코멘트에 symcbean에서, 당신도이 작업을 수행하려면 "OQgraph 데이터베이스 엔진"을 사용할 수 있습니다. 여기 최단 경로의 예입니다.
from https://stackoverflow.com/questions/47164116/mysql-and-query-to-satisfy-on-same-column by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 안드로이드 SQLite는 쿼리 - 최신 10 개 개의 레코드를 얻기 (0) | 2020.06.28 |
---|---|
[SQL] 너무 많은 시간을내어 오라클 삭제 쿼리 (0) | 2020.06.28 |
[SQL] MySQL의 여러 Where 절 (0) | 2020.06.28 |
[SQL] 각 행에 null이 아닌 컬럼의 카운트 (0) | 2020.06.28 |
[SQL] `쇼는 오라클 SQL에서 table` 동등한를 만들 (0) | 2020.06.28 |