2013-12-19 1 views
0

다음은 쿼리입니다.MalFormed MySQL 쿼리

SELECT pl.id, pl.latitude, pl.longitude, pl.userId, pl.time, pl.type, com.id as com_id, com.text, com.time as com_time, 
(SELECT name as com_name, email as com_email, picture as com_picture 
    FROM aa_users 
    LEFT JOIN aa_comments ON aa_users.id = aa_comments.user_id) 
usr.name as com_usr_name, 
usr.email as com_usr_email, 
usr.picture as com_usr_picture, 
usr.type as com_usr_type FROM aa_places as pl 
LEFT JOIN aa_comments as com ON (pl.id = com.place_id) 
LEFT JOIN aa_users as usr ON (pl.userId = usr.id) 

두 번째 선택이 실패했습니다. 나는 사용자의 2 종류지고해야 할 일은 : 사용자 장소의 소유자 (user.name, user.email, 등) 및 주석의 사용자 소유자를

(SELECT name as com_name, email as com_email, picture as com_picture 
    FROM aa_users 
    LEFT JOIN aa_comments ON aa_users.id = aa_comments.user_id) 

나는 그것을 할 수 없습니다 작업. 무엇을 바꾸어야합니까 ???

+0

이름이나 이메일, 그림이 pl이나 ​​aa_comments에 존재합니까? 당신이 말하는 이름을 지정해야 할 수도 있습니다 – Yitzchak

답변

1

내부 선택 항목이 기본 쿼리의 선택 항목입니다. 이는 합법적이지만 쿼리를 수행 할 때 하나의 열 (한 행) 만 반환 할 수 있습니다. 쿼리에서 조건이 없으므로 세 개의 열과 가능성이있는 행이 반환됩니다.

나는 당신이 뭘하려는 건지에 완전히 명확하지,하지만 난이 가까이 당신을 얻을해야한다고 생각 :

SELECT 
    pl.id, pl.latitude, pl.longitude, pl.userId, pl.time, pl.type, com.id as com_id, com.text, com.time as com_time, 
    com_usr.name as com_name, com_usr.email as com_email, com_usr.picture as com_picture, 
    usr.name as com_usr_name, 
    usr.email as com_usr_email, 
    usr.picture as com_usr_picture, 
    usr.type as com_usr_type 
FROM aa_places as pl 
LEFT JOIN aa_comments as com ON (pl.id = com.place_id) 
LEFT JOIN aa_users as com_usr ON (com.user_id=com_usr.id) 
LEFT JOIN aa_users as usr ON (pl.userId = usr.id) 

는 의견에 따라 업데이트되었습니다.

+0

이것은 내가 원하는 것입니다. 테이블 aa_comments에있는 것이 user_id 필드뿐입니다. 그래서 com2.name은 com_name, com2.email은 com_email, com2.picture는 존재하지 않습니다. –

+0

그래서'places.userid = aa_users.id'는 장소 소유자를 제공합니다, places.id = aa_comments.place_id'는 당신에게 'aa_comments.user_id = aa_users.id'는 주석 소유자를 제공합니까? 나는 나의 대답을 업데이트 할 것이다. – Joe

+0

지금 wokrs! 감사! –