2013-08-29 2 views
2

저는 MySQL에 처음 접했기 때문에 경험 많은 사람들에게 쉬운 질문 일 수 있습니다. 사용자가 댓글을 게시 한 데이터베이스에서 항목을 가져와야하고 다른 사용자가 더 최근에 댓글을 달았습니다.쿼리 내 MySQL 쿼리

내 테이블에 게시 한이 Collumns는

나는 각 사용자 (DEVICE_ID를) 의견을 얻을 수있는 간단한 쿼리를 작성했습니다
app_id - id of the item 

app_comment - comment blank if rate is present 

app_rate - rating blank if comment is present 

date - date of posting 

device_id - unique id to identify each user. 

있습니다.

temp table: 
SELECT `app_id` FROM `appaction` WHERE `device_id` = '00000000-5a24-5a06-0000-00005c907706' AND `app_comment` <> '' 

하지만 다음에 수행 할 작업을 파악할 수 없습니다. 지금은 어떻게 든 얻을 필요가 단지 다른 사람 (다른 DEVICE_ID는) 다음 각 항목에 대한 새 게시물이 기본 테이블에서 APP_ID 그

업데이트 : 데이터 예 : http://www.sqlfiddle.com/#!2/8d986/1

참고 : 그이 테이블이 어떻게 보이는지 알기위한 샘플입니다. 실제로는 약 10 000 개의 값이 있습니다.

예 : PHP 스크립트에 device_id를 제공하고 출력 결과에 사용자가 게시 한 모든 app_id가 있어야하며 그 뒤에 새로운 댓글이 있습니다.

입력 샘플 : 원하는 출력가있다 http://www.sqlfiddle.com/#!2/66258/1

입력 FFFFFFFF-c565-9b4a-FFFF-ffffc9d821fd

IMG/혼다/AccordPICS/4167946157_a5b77093bc_b.jpg

때문에 거기 다른 사람이이 app_id의 새로운 게시물입니다.

+0

샘플 데이터와 원하는 출력을 제공 할 수 있습니까? – peterm

+0

또한 가능한 경우 여기에 제공하십시오. http://www.sqlfiddle.com/ –

+0

표가 어떻게 생겼는지 아이디어를 얻으려면 샘플을 추가했습니다. 해당 테이블에 대한 샘플 데이터 및 원하는 결과를 제공하려고 시도합니다. – Datenshi

답변

1

올바르게 이해하면 app_id는 appaction의 ID가 아닌 다른 테이블에 대한 링크입니다. 이 항목 이후에 게시 된 같은 APP_ID에 대한 항목이 장치에 대한 항목을 얻을 수

SELECT ua.id AS user_item_id, oa.id AS other_item_id FROM appaction ua 
INNER JOIN appaction oa ON (ua.app_id = oa.app_id AND oa.app_comment <> '' AND oa.date > ua.date) 
WHERE 
    ua.device_id = '00000000-5a24-5a06-0000-00005c907706' 
    AND oa.device_id != '00000000-5a24-5a06-0000-00005c907706' 
    AND ua.app_comment <> '' 

:이 경우 당신은 같은 것을 할 수 있습니다. other_item_id은 이후 작업의 ID입니다.

편집 : 당신은 단지에 위의 쿼리를 변경할 필요가 출력 얻으려면 :

SELECT DISTINCT(ua.app_id) FROM appaction ua 
INNER JOIN appaction oa ON (ua.app_id = oa.app_id AND oa.app_comment <> '' AND oa.date > ua.date) 
WHERE 
    ua.device_id = 'ffffffff-c565-9b4a-ffff-ffffc9d821fd' 
    AND ua.app_comment <> '' 
+0

문제의 더 나은 이해를 위해 표 예제를 추가했습니다. – Datenshi

+0

@Datenshi 답변을 업데이트했습니다. – Jim

+0

예상대로 작동했습니다. 시간을내어이 쿼리를 이해하려고합니다. 도와 줘서 고마워! – Datenshi

0

나는 당신이 누구의 최근 글 모든 애플 리케이션을 찾고 추측하는 장치 ID 00000000-5a24-5a06- 이외에서이다 0000-00005c907706. 그것이 사실이라면 아래의 쿼리를 시도하십시오

SELECT `app_id`, group_concat(device_id) as device_ids FROM `appaction` 
GROUP BY app_id ORDER BY date DESC 
HAVING SUBSTRING_INDEX(device_ids,",",1)!= '00000000-5a24-5a06-0000-00005c907706' 
+0

"device_id"에 의해 게시물이있는 app_id를 찾고 있는데이 app_id가이 쿼리를 실행하려고 시도했지만 다른 device_id에 의해 새로운 게시물이 있지만 SQL 구문 오류가 발생합니다. – Datenshi