2016-09-28 1 views
0

Ich möchte einige Statistiken für mein Adminpanel bekommen. Ich habe zwei Tabellen namens Benutzer und cms_prosjekt. Ich möchte zählen, wie viele Projekte das gleiche Attribut wie Benutzer haben.LEFT JOIN MySQL und PHP

Jeder Benutzer hat ein Motto, das mit einem Projekt verbunden ist. Zum Beispiel: Motto ist Geist und der Projektcode ist Geist. Es wird nichts zurückgeben. Ich habe zwei Benutzer mit demselben Motto wie Code in einem Projekt.

<?php 

    $result = mysql_query("SELECT 
     users.id, 

     COUNT(users.motto) AS count 
    FROM 
     users 
     LEFT JOIN cms_prosjekt ON 
     users.motto=cms_prosjekt.code 
    GROUP BY 
     users.motto"); 
$num_rows = mysql_num_rows($result); 

    echo "$num_rows"; 

    ?> 
+2

, wenn die Abfrage erfolgreich war, Sie eine Nummer bekommen würde. Da Sie NOTHING erhalten, ist Ihre Abfrage fehlgeschlagen, Boolean False zurückgegeben, und da Sie absolut KEINE Fehlerbehandlung haben und einfach angenommen, dass nichts jemals falsch gehen kann, erhalten Sie diese Boolean False als eine Zeichenfolge, die eine Nulllänge/unsichtbare Zeichenfolge ist. –

+0

Wie ich geschrieben habe, habe ich zwei Benutzer, die das gleiche Motto wie ein Projekt haben. Also sollte es zwei zurückgeben? –

+0

Verwenden Sie nicht die veralteten mysql_ interface-Funktionen für die Neuentwicklung. Verwenden Sie mysqli oder PDO. Dieser Code setzt seinen figürlichen kleinen Finger in die Ecke seines figurativen Mundes und sagt Dr.Evil Stil. "Ich gehe davon aus, dass alles nach Plan läuft. Was?" Wenn die Abfrage einen Fehler feststellt, gibt MySQL eine Fehlermeldung aus. Dieser Code scheint die Idee, dass MySQL einen Fehler zurückgibt, völlig zu ignorieren. – spencer7593

Antwort

1

Die Abfrage sollte nicht users.motto von user.motto

"SELECT 
    user.motto 
    , COUNT(*) AS count 
FROM users 
LEFT JOIN cms_prosjekt ON users.motto=cms_prosjekt.code 
GROUP BY users.motto" 
0

Die Gruppe count (*) und der Gruppe sein users.id werden:

<?php 
$result = mysql_query("SELECT users.id, COUNT(users.motto) AS count FROM users LEFT JOIN cms_prosjekt ON users.motto=cms_prosjekt.code GROUP BY (users.id)"); 
$num_rows = mysql_num_rows($result); 
echo $num_rows; 
?> 

Hinweis: Ich kann keinen Wert für den linken Join sehen, Sie brauchen keine Daten von cms_prosjek, aber ich behalte es, wenn Sie es später verwenden werden

0

Ich fand die Lösung, aber jetzt möchte ich eine spezifische Benutzer-ID zur Abfrage hinzufügen. Da jeder Administrator seinen eigenen Home-Bereich hat, möchte ich alle Benutzer auflisten, die mit einem bestimmten Administrator verbunden sind. Jeder Administrator erstellt Projekte mit Benutzern.

Ich versuchte dies:

$result = mysql_query("SELECT users.motto, COUNT(*) AS count FROM users 
WHERE id = '".$_SESSION['user']['id']."' 
LEFT JOIN cms_prosjekt ON users.motto=cms_prosjekt.code 
GROUP BY users.motto");