2016-09-28 4 views
0

Я хочу получить некоторые статистические данные для моей админпанели. У меня есть две таблицы с именем users и cms_prosjekt. Я хочу подсчитать, сколько проектов имеют тот же атрибут, что и пользователи.LEFT JOIN MySQL и PHP

У каждого пользователя есть девиз, связанный с проектом. Например: Девиз - дух, а код проекта - дух. Он ничего не вернет. У меня есть два пользователя с тем же девизом, что и код в проекте.

<?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

если запрос успешно, вы получите ряд. Поскольку у вас нет НИЧЕГО, ваш запрос не прошел, возвращается логическое значение false, и поскольку у вас абсолютно нет обработки ошибок и просто предполагается, что ничто не может ошибиться, вы получите это логическое значение false как строку, которая является нулевой/невидимой строкой. –

+0

Как я уже писал, у меня есть два пользователя, которые имеют тот же девиз, что и проект. Так что он должен вернуть два? –

+0

Не используйте устаревшие функции интерфейса mysql_ для новой разработки. Используйте mysqli или PDO. Этот код помещает фигуративный мизинец в угол его образного уст, говоря, что стиль д-ра Эвиля «Я просто предполагаю, что все пойдет по плану. Что?» Если запрос встретит ошибку, MySQL вернет сообщение об ошибке. Этот код, по-видимому, полностью игнорирует идею о том, что MySQL может вернуть ошибку. – spencer7593

ответ

1

Запрос должен быть подсчет (*) и группы по 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

Группа по должны быть users.id не users.motto:

<?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; 
?> 

Примечание: я не вижу никакого значения для левого соединения, вам не нужны данные из cms_prosjek, но я сохраню его, если вы его используете позже.

0

Я нашел но теперь я хочу добавить к запросу определенный идентификатор пользователя. Поскольку каждый администратор имеет свою собственную домашнюю область, я хочу перечислить всех пользователей, подключенных к определенному администратору. Каждый администратор создает проекты с пользователями.

Я попытался это:

$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");