$sth = $db->prepare("SELECT tblCompanies.*, users.Username, cargo.Name, (tblCompanies.Money + SUM(tblCTerminals.sellValue)) as assets, (COUNT(tblFinishedContracts.ID) + COUNT(tblFinishedSubContracts.ID)) as completed FROM ((((tblCompanies LEFT JOIN users ON tblCompanies.CompanyCEO = users.ID) LEFT JOIN cargo ON (tblCompanies.PreferredCargo = cargo.Cargo_ID)) LEFT JOIN tblCTerminals ON (tblCompanies.Company_ID = tblCTerminals.companyID)) LEFT JOIN tblFinishedContracts ON (tblCompanies.Company_ID = tblFinishedContracts.companyID)) LEFT JOIN tblFinishedSubContracts ON (tblCompanies.Company_ID = tblFinishedSubContracts.companyID) WHERE (users.Username LIKE :info || tblCompanies.CompanyName LIKE :info2 || CONCAT('$',FORMAT((tblCompanies.Money + SUM(tblCTerminals.sellValue)),2)) LIKE :info3 || CONCAT('$',FORMAT(tblCompanies.Money,2)) LIKE :info4 || cargo.Name LIKE :info5 || users.pLevel LIKE :info6 || CONCAT('$',FORMAT((users.Cash_In_Bank + users.Cash_In_Hand),2)) LIKE :info7)");
$sth->bindValue(':info', '%'.$_GET['sSearch'].'%', PDO::PARAM_STR);
$sth->bindValue(':info2', '%'.$_GET['sSearch'].'%', PDO::PARAM_STR);
$sth->bindValue(':info3', '%'.$_GET['sSearch'].'%', PDO::PARAM_STR);
$sth->bindValue(':info4', '%'.$_GET['sSearch'].'%', PDO::PARAM_STR);
$sth->bindValue(':info5', '%'.$_GET['sSearch'].'%', PDO::PARAM_STR);
$sth->bindValue(':info6', '%'.$_GET['sSearch'].'%', PDO::PARAM_STR);
$sth->bindValue(':info7', '%'.$_GET['sSearch'].'%', PDO::PARAM_STR);
좋아, 그래서 지금이 혼란에 대한 내 추론 :여러 왼쪽의 문제에 가입
나는 jQuery Datatables 플러그인을 사용하고 있는데 서버에 요청을 수행 할 때 쿼리를 전송합니다. 결과, 검색 쿼리에서의 결과 수 및 총 결과 수를 예상합니다. 이 쿼리를 사용하면 결과를 반환 할 수 있습니다.
그러나 COUNT (tblFinishedContracts.ID)에서는 테이블을 8 번 점유하고 있습니다. 그래서 그 대신이 112
의 수를 반환 (8)의 정확한 금액을 반환의 예를 들어 내가 수행 할 때 누군가가 일을 더 좋은 방법을 알고 있다면
그것은 작동SELECT COUNT(tblFinishedContracts.ID)
FROM tblCompanies
LEFT JOIN tblFinishedContract
ON (tblCompanies.Company_ID = tblFinishedContracts.ID)
WHERE tblCompanies.Company_ID = 11
, 그것은 8. 반환 무엇 성취를 위해 노력 중이거나 문제를 해결하는 방법을 알려 주시면 큰 감사를드립니다!
감사합니다,
제프
편집 : 추가, 더 열이 중복 된 이름이없는 모든 것이 다르다.
좋아,이게 내가 지금 가지고있는 올바른 구문을 확인하라는 오류가 나타납니다. "SELECT 1 FROM tblFinishedSubContracts where companyID = tblCompanies.Company_ID"':'SELECT COUNT (SELECT 1 FROM tblFinishedSubContracts WHERE companyID = tblCompanies.Company_ID) FROM ((tblCompanies LEFT JOIN화물 ON (tblCompanies.PreferredCargo = cargo.Cargo_ID)) LEFT JOIN tblCTerminals ON (tblCompanies.Company_ID = tblCTerminals.companyID)) 왼쪽 사용자를 tblCompanies.CompanyCEO = users.ID에 가입시킵니다.) 어디 tblCompanies.Company_ID = 7' 그것은 무엇이 잘못되었는지 확실히 모른다. – jefffan24
@ jefffan24 : 내 잘못 : 한 쌍의 괄호를 생략했습니다. 'COUNT (SELECT ...)'는'COUNT ((SELECT ...)))'(한 쌍은'COUNT'에 속하며 그 인수를 구분하기 위해, 다른 한 쌍은 부질의에 속한다. 내 대답을 바로 잡았어. – ruakh
새로운 문제 : 하위 쿼리가 1 개 이상의 행을 반환합니다 ... 하위 쿼리의 유형을 계산할 수 있습니까? – jefffan24