복붙노트

[SQL] ANSI 1992 쿼리에서 조인 쉼표 혼합

SQL

ANSI 1992 쿼리에서 조인 쉼표 혼합

난 일부 데이터를 가져 오기 위해 다음과 같은 MySQL의 쿼리를 시도하고있다 :

SELECT m.*, t.*
FROM memebers as m, telephone as t
INNER JOIN memeberFunctions as mf ON m.id = mf.memeber
INNER JOIN mitgliedTelephone as mt ON m.id = mt.memeber
WHERE mf.function = 32

하지만 난 항상 다음과 같은 오류가 발생합니다 :

#1054 - Unknown column 'm.id' in 'on clause'

열이 존재 않으며 쿼리가 하나의 테이블로 벌금을 작동 (예를 들어, 내가 전화를 제거 할 때)

아무도 내가 잘못 무엇을 알고 있나요?

해결법

  1. ==============================

    1.그것은 당신의 요구 사항은 회원 테이블에 참여하는 것입니다하지만 당신은 전화 테이블과 합류 보인다. 단지 순서를 변경합니다.

    그것은 당신의 요구 사항은 회원 테이블에 참여하는 것입니다하지만 당신은 전화 테이블과 합류 보인다. 단지 순서를 변경합니다.

    SELECT 
        `m`.*,
        `t`.* 
    FROM
        `memebers` AS `m` 
        JOIN `telephone` AS `t` 
        JOIN `memeberFunctions` AS `mf` 
            ON `m`.`id` = `mf`.`memeber` 
            AND `mf`.`function` = 32 
        JOIN `mitgliedTelephone` AS `mt` 
            ON `m`.`id` = `mt`.`memeber`;
    

    이 당신을 도움이되기를 바랍니다. 감사합니다!!

  2. ==============================

    2.구축하는 조인 할 때이 링크에 따르면, 당신은 둘 표기법을 혼합해서는 안된다. 당신이 t으로 m, 전화기 등의 멤버들에 가입하는 데 사용하는 쉼표, 및 내부에 대한 후속 호출은 알 수없는 열 오류를 유발 조인.

    구축하는 조인 할 때이 링크에 따르면, 당신은 둘 표기법을 혼합해서는 안된다. 당신이 t으로 m, 전화기 등의 멤버들에 가입하는 데 사용하는 쉼표, 및 내부에 대한 후속 호출은 알 수없는 열 오류를 유발 조인.

    그것을 처리하기 위해 사용 CROSS / INNER / LEFT 대신 쉼표의 가입.

    교육적 목적을 위해, 내가 같이 쿼리를 추가 해요, 내가 생각해야한다 :

    SELECT m.*, t.*
    FROM memebers as m 
        JOIN telephone as t
        JOIN memeberFunctions as mf ON m.id = mf.memeber AND mf.function = 32
        JOIN mitgliedTelephone as mt ON m.id = mt.memeber
    

    당신이 t 및 m에 합류하지 않을 때문에, 최종 결과는 카티 제품이 될 것입니다; 당신은 개정 할 수 있습니다.

    나는 그것이 도움 바랍니다.

  3. from https://stackoverflow.com/questions/11179991/mixing-ansi-1992-joins-and-commas-in-a-query by cc-by-sa and MIT license