나는이 쿼리를 가지고 있으며 "likes"라는 테이블에 또 다른 조인을 포함해야한다. 여기서 updates.id = likes.update_id이다. 이 조인에는 0 개 이상의 일치 항목이 있습니다.MYSQL one to many JOIN
"SELECT * FROM users
INNER JOIN updates ON users.remote_id=updates.owner_id
ORDER BY updates.status_time DESC LIMIT 50"
이것은 매우 간단하지만 이러한 종류의 쿼리에 대한 예제를 찾을 수 없었습니다.
상황은 기본적으로 항목 목록을 표시하고 있습니다. 각 항목을 만든 사용자를 얻기 위해 사용자 테이블에 조인을 수행합니다. 또한 각 항목을 좋아하는 0 명 이상의 사용자를 표시하기 위해 '좋아요'표를 조인해야합니다.
편집 : 내 솔루션
좋아, 여기에 성공적으로 가입 GROUP_CONCAT를 사용하여 (인해 여러 있다는 사실 각 업데이트에 대해 "좋아"로) 중복 된 결과의 결합.
"SELECT users.*,updates.update_id,updates.content,updates.status_time,
GROUP_CONCAT(likes.liker SEPARATOR ',') AS liked_by
FROM updates
LEFT OUTER JOIN likes ON updates.update_id = likes.update_id
JOIN users ON users.remote_id = updates.owner_id
GROUP BY updates.update_id
ORDER BY updates.status_time DESC
LIMIT 200"
을 특정 사용자 :)의 모든 업데이트를
환호 것이 방법 BY (users.remote_id = updates.owner_id) 주문 업데이트 updates.time에 의해 주문해야하지만, resu에는 '시간'필드가 없습니다. 거기에 무엇이 있습니까? –
또한 세 테이블 각각에 대해 전체 열 목록을 갖는 것이 도움이됩니다. users.id 컬럼과 updates.id 컬럼이있는 경우, 조인이 unique.proxy (고유하지 않은 컬럼 이름의 주요 문제점 중 하나)에 있더라도 users.id 만 보일 수 있습니다. –
예, 고유하지 않은 열 이름이 혼동을 일으켰습니다. 나는 그것을 알아 냈고 원래 게시물을 솔루션으로 업데이트했습니다. 감사! – makeee