1
내 데이터베이스에 모든 대화 쌍을 나열하고 싶습니다. 테이블 message
에 메시지 정보를 저장하는 곳이 있습니다.
나는 또한 시도했지만 나를 위해 작동하지 않는다 Link 별개의 선택 전용 열이 지정되어 있기 때문에.
Ex. $_SESSION['userid'] = 1
데이터베이스의 두 열로 그룹화하는 방법?
테이블 메시지
sender_id sendto_id created(datetime)
1 2
1 2
1 3
1 4
3 1
3 1
2 4
4 2
내 결과는 1,3
와 3,1
사이에 명성을 가지고합니다.
sender_id sendto_id
1 2
1 3
1 4
3 1
나는 이것을 좋아하고 각 쌍에 대해 가장 최근에 추가 된 필드를 선택합시다. Ex. 1-2(1)
, 1-2(2)
및 2-1
2-1
이 최신 인 경우 2-1
이거나 최신 인 경우 1-2(2)
이어야합니다.
sender_id sendto_id created(datetime)
2 1 newest of pair 1-2 or 2-1
1 3 newest of pair 1-2 or 2-1
1 4 newest of pair 1-2 or 2-1
여기 내 SQL이 도와주세요! 고맙습니다.
select m.*,
(select MAX(created)
from message n
where (n.senderid = m.sendtoid AND n.sendtoid = '$userid')
OR (n.senderid = '$userid' AND n.sendtoid = m.sendtoid)) lastsend
from message m
where (m.senderid = '$userid' OR m.sendtoid = '$userid')
group by m.senderid, m.sendtoid
order by lastsend desc
그래, 그래도 문제가 해결되지 않았습니까? 'SQL 구문에 오류가 있습니다. 올바른 구문을 보려면 MySQL 서버 버전에 해당하는 매뉴얼을 확인하십시오. 4 행 – Marcus
@Marcus에서 'sender_id, 최대 (sender_id, sendto_id)'와 같이 사용하십시오. . . 'as '는'group by' 절의 copy-and-paste 오류에 속하지 않습니다. –
감사합니다. @Gordon 나는 바뀌었고 효과가있었습니다. – Marcus