2016-03-23 20 views
2

ich viele Beiträge mit ähnlichen Fragen geprüft, bekam aber nicht eine Antwort zu finden.SQL beitreten Ergebnisse erhalten, die nicht beitreten hat aswell

Ich habe 2 Tabellen, die eine Eins-zu-Beziehung haben. Einer ist Kunden und der andere ist Projekte. Ein Kunde kann viele Projekte haben. ihre PK und FK sind customer.customer_id und project_customer_id.

Nun, wenn ich verwenden Sie die folgende SQL

SELECT *, COUNT(project.project_id) AS totalProjects 
FROM `customer` LEFT JOIN `project` 
ON `project`.`customer_id` = `customer`.`customer_id` 
ORDER BY `customer`.`date_created` DESC 

Jedoch, wenn ich jetzt alle meine Kunden bekommen sie nur die Kunden zurückgibt, die tatsächlich ein Projekt haben. Ich habe innere, äußere, linke, gewerkschaftliche und rechte Verbindungen benutzt, aber kein Glück. Ich habe auch DISTINCT versucht, aber auch nicht funktioniert.

Hat jemand eine Idee für eine solche Abfrage, die es allen Kunden zurückgibt, selbst wenn sie keine Projekte haben?

Vielen Dank im Voraus, Rodney

+1

was erwarten Sie von dieser Abfrage ??? – Avi

+0

Ihre Anfrage sieht korrekt aus. Kannst du die Tabellen Strukturen, Teil der Daten, kann es helfen, – ehh

Antwort

0

Da Sie nur mit der Anzahl der Projekte „wenn ich mich richtig aus Ihrer Frage verstanden“, entweder eine Funktion erstellen Sie diese erhalten zählen oder schreiben Sie eine Unterabfrage wie das Beispiel unten ...

SELECT 
    *, 
    (
     SELECT COUNT(project.project_id) from project 
     WHERE 
     project.customer_id = customer.customer_id 
    ) AS totalProjects 
FROM 
    customer 
ORDER BY customer.date_created DESC 
+0

danke, das war genau das, was ich wollte –

0

Verwenden Sie diese Abfrage:

SELECT *, COUNT(project.project_id) AS totalProjects FROM `customer` LEFT JOIN `project` ON `project`.`project_customer_id` = `customer`.`customer_id` GROUP BY `customer`.`customer_id` ORDER BY `customer`.`date_created` DESC 
-1

nicht aus Ihrer Frage klar, aber ich glaube, Sie versuchen, alle customers und aufzulisten, ob es irgendwelche projects mit einem zugehörigen customer dann die Anzahl der 'Projekte' auflisten? Wenn das Ihre Frage dann sollte die unten lösen es für Sie:

SELECT *, ISNULL((SELECT COUNT(*) FROM Project WHERE CustomerID = C.CustomerID),0) AS ProjectCount FROM Customer C ORDER BY C.Date_Created DESC