2013-08-23 2 views
0

오랜 시간 동안 검색 한 후이를 수행 할 쿼리를 찾지 못했습니다.주어진 레코드 중 하나가 다른 필드의 주어진 id와 일치하는 경우 주어진 ID가 아닌 레코드를 모두 반환하십시오.

"listing_id"필드와 "user_id"필드가있는 "offers"테이블이 있으며 적어도 하나 이상의 레코드가 주어진 user_id와 일치하는 모든 listing_id에 대해 모든 레코드를 가져와야합니다.

즉, 주어진 사용자가 참여한 listing_id를 확인한 다음 user_id와 관계없이 해당 listing_id의 모든 오퍼 레코드를 반환하는 쿼리가 필요합니다.

마지막 부분이 문제입니다. 하나의 사용자의 ID와 목록 ID가없는 경우에만 다른 사용자의 제안 레코드를 반환합니다.

먼저 개별 목록에서 listing_ids를 확인한 다음 PHP 루프를 사용하여 WHERE 절을 작성하려고합니다 "listing_id = $ var ||"의 묶음으로 구성된 두 번째 쿼리의 경우 그러나 나는 더 나은 방법이 있어야한다고 생각했기 때문에 스스로 할 수 없었습니다.

바라기를 바란다. 이것은 쉽게 쉬울 뿐이며, 내가 탈출 한 유일한 이유는 내 머리를 내 머리 위로 가졌기 때문이다. 나 뒤에 이걸 가지고 행복해.

시간을내어 주셔서 감사합니다.

조쉬

답변

0

당신이 할 수있는 두 개의 쿼리를 다음과 같이 MySQL의 측면에 따라 재생 :

SELECT * FROM offers WHERE listing_id IN (SELECT listing_id FROM offers WHERE user_id = 1) 
+0

예! 고맙습니다. 보세요, 나는 쉬운 일임을 알고있었습니다. 신선한 눈은 귀중합니다. –

+0

EXISTS를 사용하고있어 제대로 작동하지 않았습니다. –

0

난 당신이 listingid 일치와 사용자 ID에 자체 이벤트에 가입해야 후이 무엇인지 이해한다면 = 주어진

select * from offers AS t1 
inner join offers AS t2 on t1.listingid = t2.listingid and t1.userid = 1; 
+0

Nah, 방금 동일한 user_id를 가진 많은 양의 곱해진 레코드를 반환했습니다. Isouza의 대답은 방법입니다. 시간을내어 주셔서 감사합니다. –

관련 문제