2017-06-14 3 views
0


Ich kann Graf von home_id von server_homes zu bekommen, aber wenn ich NATURAL JOIN user_homes machen (diese Tabelle hat die gleiche Spalte home_id mit demselben Wert) das Ergebnis von count Vielfach (wenn die reale Ergebnis 2 ist die count ist 4).Abfrage Anzahl für spezifische Spalte aus bestimmten Tabelle JOIN andere Tabelle haben die gleiche Spalte?

Dieser Code, was ich verwende:

 return $this->resultQuery('SELECT COUNT(home_id) AS total FROM `'.$this->table_prefix.'server_homes` 

     '.($search_field ? ' 
     NATURAL JOIN `'.$this->table_prefix.'user_homes` 
     NATURAL JOIN `'.$this->table_prefix.'remote_servers` 
     NATURAL JOIN `'.$this->table_prefix.'home_ip_ports` 

     ' : '').' 
     '); 
+0

Würde ein 'count (distinct (home_id))' arbeiten? – cwallenpoole

+0

Siehe https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-very-simple-sql- Frage – Strawberry

+0

@cwallenpoole JA, das ist Arbeit !!, ich war 2 Tage verbringen hhhhh LOL. Danke nochmal. –

Antwort

0

SO das Problem hier ist, dass die home_id unter allen Tabellen nicht eindeutig ist. Ich würde vermuten, dass es mehrere Home-IP-Ports oder mehrere Remote-Server für das gleiche Haus geben würde. Dies bedeutet, dass die Gesamtzahl der Zeilen #Servershomes + #dupes userhomes + #dupes remote servers + #dupes home IP-Ports ist.

Die Art und Weise, dies zu umgehen ist, dass Sie nur zu machen, werden einmal die IDs zählen:

SELECT COUNT(DISTINCT(`home_id`)) FROM 
    -- Yada yada 
Verwandte Themen