2017-03-29 2 views

Antwort

0

Wenn ich Ihre Frage richtig verstehe, ist es wahrscheinlich ein Problem mit Ihrer WHERE Klausel. Versuchen Sie, Paramente mit dem OR Teil der Klausel zu verwenden.

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) 

die Frage, die Sie in den Kommentaren ..

i die driverrides auswählen möchten alle mit Ausnahme der nicht beantwortet zu werden, dass der Benutzer bereits in

gebucht Klingt wie Sie gerade nicht die anderen Bedingungen, die Sie in Ihrer WHERE Klausel haben.

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

durch ein LEFT JOIN tun und dann nur unter Datensätze, die nicht mit WHERE .. IS NULL in der verknüpften Tabelle vorhanden war, ist dies ein LEFT OUTER JOIN tun.

In Ihrem Fall Ridedriver ist Tabelle A und Bookings ist in Tabelle B, so wird dies Datensätze zurück in Ridedriver, die in Bookings zu irgendetwas nicht beitreten.

+0

ty jetzt funktioniert es, aber das Problem ist mit AND (b.iduser! = 2 ODER b.iduser IS NULL) oder nicht nichts zu ändern, wo es nicht das gleiche Ergebnis sein sollte –

+0

Ich habe versucht, diese sql und es funktioniert so shoudl be SELECT DISTINCT (p.id), citySource, cityDestination, b.iduser VON ridedriver p LEFT JOIN Buchungen b ON b.idridedriver = p.id WHERE p.Frequency IST NICHT NULL UND p.nbrplaces> 0 UND b.iduser ! = 2 oder b.iduser IS NULL; –

+0

Es tut mir leid, ich bin mir nicht sicher, ob ich das verstehe. Hast du ein anderes Problem? – fqhv

Verwandte Themen