두 개의 테이블이 있습니다. 그들 중 하나가 명명 files
되고 모든 파일의 목록이 있습니다. 두 번째 테이블은 payments
이며 일부 파일에 대한 지불 목록이 있습니다.
지불 :
id | fileid | {...}
1 2
2 3
3 2
파일 :
id | {...}
1
2
3
모든 파일을 선택하고 테이블 payments
을 결합 하여이 테이블의 개수로 정렬 하고 싶습니다 .
이 경우 첫 번째 행은 payments
테이블 에서 가장 많이 반복되므로 파일 # 2가됩니다 .
나는 그것을 시도했지만 그것을 할 때 모든 행이 표시되지는 않습니다!
모든 파일이 payments
테이블 에 있지 않기 때문에 발생한다고 생각 합니다. 그래서이 경우에는 첫 번째 행이 표시되지 않을 것이라고 생각합니다.
고마워, 내 영어에 대해 죄송합니다
추신 : mysql 엔진을 사용합니다.
** 업데이트 ** 내 코드 :
SELECT `id`,`name`,`size`,`downloads`,`upload_date`,`server_ip`,COUNT(`uploadid`) AS numProfits
FROM `uploads`
JOIN `profits`
ON `uploads`.`id` = `profits`.`uploadid`
WHERE `uploads`.`userid` = 1
AND `removed` = 0
ORDER BY numProfits
다른 사람들이 언급했듯이 LEFT JOIN을 사용해야합니다. -이것은 MySQL에 오른쪽 테이블에 해당 항목이 없더라도 왼쪽 테이블의 항목이 포함되어야 함을 알려줍니다.
또한 GROUP BY를 사용하여 COUNT가 전달되는 방법을 표시해야합니다.
따라서 SQL은 다음과 같아야합니다.
SELECT Files.ID, count(Payments.FileID) as numpays FROM
Files
LEFT OUTER JOIN
Payments
ON Files.id=Payments.FileID
GROUP BY files.ID
ORDER BY numpays desc
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다