1. MySQL :
SELECT a.*,COUNT(DISTINCT b.id) AS IndianTruck,COUNT(DISTINCT d.id) AS BdTruck
FROM manifests a
JOIN truck_entry_regs b ON a.id = b.manf_id
LEFT JOIN truck_deliverys d ON a.id = d.manf_id
WHERE a.manifest='550/7'
GROUP BY a.id
2.Laravel 5.4
$results = DB::select('SELECT a.*, COUNT(DISTINCT b.id) AS IndianTruck,COUNT(DISTINCT d.id) AS BdTruck
FROM manifests a
JOIN truck_entry_regs b ON a.id = b.manf_id
LEFT JOIN truck_deliverys d ON a.id = d.manf_id
WHERE a.manifest=?
GROUP BY a.id', ['550/7'])
동일한 쿼리가 있습니다. 첫 번째 쿼리는 MySQL (Sqlyog)에서 잘 실행됩니다. 난 내 laravel 5.4 응용 프로그램을 (두 번째 쿼리를) 그것을 실행하는 경우 그러나 그것은 말한다 :Laravel 5.4 Raw가 예상대로 작동하지 않지만 mySQL에서 작동 중
QueryException in Connection.php line 647:
SQLSTATE[42000]: Syntax error or access violation: 1055 'dbblpa.a.port_id' isn't in GROUP BY (SQL: SELECT a.*, COUNT(DISTINCT b.id) AS IndianTruck,COUNT(DISTINCT d.id) AS BdTruck
FROM manifests a
JOIN truck_entry_regs b ON a.id = b.manf_id
LEFT JOIN truck_deliverys d ON a.id = d.manf_id
WHERE a.manifest=550/7
GROUP BY a.id)
어떻게 내가 가입 한 후 다른 테이블에서 계속있는 테이블에서 모든 데이터를 반환 할 수 있습니까? select.a, a.name, COUNT (DISTINCT b.id)와 같이 select에 a.id, a.name을 추가하고 GROUP BY에 a.id 및 a.name을 추가하면 작동합니다. 질문에 count로 테이블의 모든 열을 반환하면 그룹의 모든 열을 추가해야합니까? 나는 그것이 이상하다는 것을 안다! 그런 다음 어떻게 laravel 5.4 쿼리 빌더에서 예상되는 결과를 얻을 수 있습니까?
'manifests .id'는 기본 키입니까? 또는 적어도 유일한? –
기본 키입니다. 그러나 나는 truck_deliverys 또는 truck_entry_reg와 명시 적으로 외래 키를 만들지 않았습니다. – Fawel
FK는이 문제와 관련이 없습니다. –