2017-03-29 10 views
0

어떻게하면 LEFTWHERE 조건을 추가 할 수 있습니까? ridedriver 개체를 가져 오는 위치를 읽지 않습니까?어떻게 내가 왼쪽 조인을 추가 할 수있는 조건을 어디에 모든 ridedriver 개체를 가져 오지 않는 읽을 수 있습니까?

SELECT p 
FROM RideDriverEmployeeBundle:Ridedriver p 
LEFT JOIN Chaya3niUserBundle:Bookings b WITH b.idridedriver = p.id 
WHERE p.frequency IS NOT NULL 
    AND p.nbrplaces > 0 
    AND b.iduser != 2 
    OR b.iduser IS NULL 

답변

0

질문을 올바르게 이해하면 WHERE 절에 문제가있을 수 있습니다. 절의 OR 부분과 함께 괄호를 사용해보십시오.

는 는
SELECT p 
FROM RideDriverEmployeeBundle:Ridedriver p 
LEFT JOIN Chaya3niUserBundle:Bookings b WITH b.idridedriver = p.id 
WHERE p.frequency IS NOT NULL 
    AND p.nbrplaces > 0 
    AND (b.iduser != 2 OR b.iduser IS NULL) 

i는 사용자가 이미

에 예약 한 제외한 모든 driverrides을 선택하려는 당신이 의견 묻는 질문 ..

에 대답하는 것은 당신처럼 소리 만 WHERE 절에있는 다른 조건을 원하지 마십시오. WHERE .. IS NULL에 조인 된 테이블에 존재하지 않는 LEFT JOIN와 만 복용 기록을 수행함으로써

SELECT p 
FROM RideDriverEmployeeBundle:Ridedriver p 
LEFT JOIN Chaya3niUserBundle:Bookings b WITH b.idridedriver = p.id 
WHERE b.iduser IS NULL 

, 이것은 LEFT OUTER JOIN을하고있다. 귀하의 경우 Ridedriver

은 표 A이고 Bookings은 표 B, 그래서이 Bookings 아무것도에 가입하지 않는 Ridedriver의 레코드를 반환합니다.

+0

ty 이제는 작동하지만 문제는 AND (b.iduser! = 2 또는 b.iduser IS NULL)를 사용하거나 동일한 결과가 아니어야하는 부분을 변경하지 않는 것입니다. –

+0

이 SQL을 tryed하고 같이 작동합니다 shoudl be SELECT DISTINCT (p.id), citySource, cityDestination, b.iduser FRIDE ridedriver p LEFT JOIN 예약 b ON b.idridedriver = p.id p.frequency가 NULL이 아니고 p.nbrplaces> 0 및 b.iduser 인 경우 ! = 2 또는 b.iduser IS NULL; –

+0

죄송합니다. 이해할 수 있는지 잘 모르겠습니다. 다른 문제가 있습니까? – fqhv