2016-06-03 3 views
0

Das einzige Problem ist, mein Code gibt nur Ergebnisse zurück, wenn mindestens eine Liste in der wp_realcustomers Tabelle verfügbar ist, aber ich möchte es zurückgibt Ergebnisse, ob es eine Liste/Daten in wp_realcustomers hat, so dass es eine Art von optional.Wie kann man die Tabelle JOIN optional hinzufügen?

ist hier mein Code:

"SELECT 
    usermeta1.user_id, 
    usermeta2.meta_value AS firstname, 
    usermeta3.meta_value AS lastname, 
    usermeta4.meta_value AS phone1, 
    usermeta5.meta_value AS phone2, 
    mainuser.user_email AS email, 
    COUNT(customers.id) AS numberofcustomers 


FROM wp_usermeta usermeta1 
JOIN wp_usermeta usermeta2 ON(usermeta1.user_id = usermeta2.user_id AND usermeta2.meta_key = 'first_name') 
JOIN wp_usermeta usermeta3 ON(usermeta1.user_id = usermeta3.user_id AND usermeta3.meta_key = 'last_name') 
JOIN wp_usermeta usermeta4 ON(usermeta1.user_id = usermeta4.user_id AND usermeta4.meta_key = 'tm_phone_1') 

JOIN wp_usermeta usermeta5 ON(usermeta1.user_id = usermeta5.user_id AND usermeta5.meta_key = 'tm_phone_2') 
JOIN wp_users mainuser ON(usermeta1.user_id = mainuser.ID) 
JOIN wp_realcustomers customers ON(usermeta1.user_id = customers.team_member_id) 


WHERE usermeta1.meta_key='teamleader_id' && usermeta1.meta_value='1' 
+1

Ändern Sie JOIN zu LEFT JOIN (zumindest für die Meta-Tabellen). – Strawberry

Antwort

2

Mit LINKS auf wp_realcustomers JOIN

"SELECT 
    usermeta1.user_id, 
    usermeta2.meta_value AS firstname, 
    usermeta3.meta_value AS lastname, 
    usermeta4.meta_value AS phone1, 
    usermeta5.meta_value AS phone2, 
    mainuser.user_email AS email, 
    COUNT(customers.id) AS numberofcustomers 


FROM wp_usermeta usermeta1 
JOIN wp_usermeta usermeta2 ON(usermeta1.user_id = usermeta2.user_id AND usermeta2.meta_key = 'first_name') 
JOIN wp_usermeta usermeta3 ON(usermeta1.user_id = usermeta3.user_id AND usermeta3.meta_key = 'last_name') 
JOIN wp_usermeta usermeta4 ON(usermeta1.user_id = usermeta4.user_id AND usermeta4.meta_key = 'tm_phone_1') 

JOIN wp_usermeta usermeta5 ON(usermeta1.user_id = usermeta5.user_id AND usermeta5.meta_key = 'tm_phone_2') 
JOIN wp_users mainuser ON(usermeta1.user_id = mainuser.ID) 
LEFT JOIN wp_realcustomers customers ON(usermeta1.user_id = customers.team_member_id) 


WHERE usermeta1.meta_key='teamleader_id' && usermeta1.meta_value='1'" 

Wenn Sie zählen Sie Gruppe haben müssen

"SELECT 
    usermeta1.user_id, 
    usermeta2.meta_value AS firstname, 
    usermeta3.meta_value AS lastname, 
    usermeta4.meta_value AS phone1, 
    usermeta5.meta_value AS phone2, 
    mainuser.user_email AS email, 
    COUNT(customers.id) AS numberofcustomers 


FROM wp_usermeta usermeta1 
JOIN wp_usermeta usermeta2 ON(usermeta1.user_id = usermeta2.user_id AND usermeta2.meta_key = 'first_name') 
JOIN wp_usermeta usermeta3 ON(usermeta1.user_id = usermeta3.user_id AND usermeta3.meta_key = 'last_name') 
JOIN wp_usermeta usermeta4 ON(usermeta1.user_id = usermeta4.user_id AND usermeta4.meta_key = 'tm_phone_1') 

JOIN wp_usermeta usermeta5 ON(usermeta1.user_id = usermeta5.user_id AND usermeta5.meta_key = 'tm_phone_2') 
JOIN wp_users mainuser ON(usermeta1.user_id = mainuser.ID) 
LEFT JOIN wp_realcustomers customers ON(usermeta1.user_id = customers.team_member_id) 


WHERE usermeta1.meta_key='teamleader_id' && usermeta1.meta_value='1' 
group by usermeta1.user_id, usermeta2.meta_value , 
      usermeta3.meta_value , usermeta4.meta_value , 
      usermeta5.meta_value , mainuser.user_email " 
+0

ja LEFT JOIN, aber COUNT ist auch hier das Problem, gibt nur eine Zeile zurück (aber ohne COUNT bekomme ich normalerweise Ergebnisse von 2 Leuten, aber mit COUNT gibt es eine Zeile mit einer Realcustom-Liste beider Jungs 6 + 2 = 8), jetzt in meiner Datenbanktabelle beide Benutzer (Alice und Bob) sind aufgeführt in wp_realcustomers Tabelle als team_member_id –

+1

Ich habe update die Antwort .. Hoffnung ist nützlich – scaisEdge

+0

genial, es funktioniert. –

1

Verwenden left outer join statt join - mehr Details here

+0

Ich finde nur heraus, dass COUNT tatsächlich alle Anzahl von Kunden zählt, unabhängig von der Teammitglied-ID, ohne Count-Zeile, bekomme ich 2 Zeilen zurück (2 Ergebnisse) Alice (6) und Bobs (2). aber wenn ich COUNT verwende, gibt es eine Anzahl von Kunden insgesamt 8 und ein Ergebnis, ich muss COUNT etwas anderes verwenden und ja, es muss natürlich optional sein. –

Verwandte Themen