복붙노트

[SQL] MYSQL 쿼리가 동일한 열에 만족시키기

SQL

MYSQL 쿼리가 동일한 열에 만족시키기

프로젝트 목표 :

우리는 사용자가 버스를 검색합니다 버스 타이밍 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. ==============================

    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. ==============================

    2.즉 문제 .. 그것을 위해, 당신은 더 나은 도구가 필요 라우팅라는 문제의 클래스에 엄청난 문제입니다 : 마이그레이션하거나 PostgreSQL을 통합하고, 검사 특별히 PgRouting 고려하면 가능성이 다 익스트라의 최단 경로를 할 것입니다. PostGIS와 확장 꼭대기 실행을 PgRouting.

    즉 문제 .. 그것을 위해, 당신은 더 나은 도구가 필요 라우팅라는 문제의 클래스에 엄청난 문제입니다 : 마이그레이션하거나 PostgreSQL을 통합하고, 검사 특별히 PgRouting 고려하면 가능성이 다 익스트라의 최단 경로를 할 것입니다. PostGIS와 확장 꼭대기 실행을 PgRouting.

    또는, Esri는과의 통합 작업을 고려.

    또는 당신이 엉망의 주위를 할 수있는,하지만 난 그것을 조언하지 않을 것입니다.

    코멘트에 symcbean에서, 당신도이 작업을 수행하려면 "OQgraph 데이터베이스 엔진"을 사용할 수 있습니다. 여기 최단 경로의 예입니다.

  3. from https://stackoverflow.com/questions/47164116/mysql-and-query-to-satisfy-on-same-column by cc-by-sa and MIT license