2016-01-18 3 views
0
<?php 
include("includes/dbconnect.php"); 
$getTagsQuery = mysql_query(" 
select tag, sum(tagCount as tagCount) from 
(select tag1 as tag, count(*) as tagCount from videos GROUP BY tag1 
UNION 
select tag2 as tag, count(*) as tagCount from videos GROUP BY tag2 
UNION 
select tag3 as tag, count(*) as tagCount from videos GROUP BY tag3 
UNION 
select tag4 as tag, count(*) as tagCount from videos GROUP BY tag4 
UNION 
select tag5 as tag, count(*) as tagCount from videos GROUP BY tag5) 
GROUP BY tag 
"); 
while ($row = mysql_fetch_array($getTagsQuery)){ 
echo " 
    ".$row['tagCount']." 
    "; 
} 
?> 

Здравствуйте, У меня есть этот код. Что мне нужно сделать, так это получить количество раз, когда в указанных строках появляется другой тег. Без повторения тегов. Почему это не работает? Может ли кто-нибудь помочь? Я не могу заставить его работать.Выбрать отличительные значения из разных строк

Ty

+0

есть ошибки? –

+0

не работает ** КАК **? вы не получите ожидаемого результата? код падает? –

ответ

0

если вы хотите суммировать числа всех тегов вы должны удалить последнюю группу по, чтобы быть:

$getTagsQuery = mysql_query(" 
select tag, sum(tagCount as tagCount) from 
(select tag1 as tag, count(*) as tagCount from videos GROUP BY tag1 
UNION 
select tag2 as tag, count(*) as tagCount from videos GROUP BY tag2 
UNION 
select tag3 as tag, count(*) as tagCount from videos GROUP BY tag3 
UNION 
select tag4 as tag, count(*) as tagCount from videos GROUP BY tag4 
UNION 
select tag5 as tag, count(*) as tagCount from videos GROUP BY tag5) 
"); 
+0

Ваш запрос обязан бросить ошибку компиляции. – Rahul

+0

Почему вы так говорите? –

+0

Это прекрасно. –

0

Прежде всего, ваш запрос выглядит немного странно, но вы могли бы получать ошибка из-за SUM() функции sum(tagCount as tagCount), которые фактически должны быть

select tag, sum(tagCount) as tagCount from 
0

Ваши специфические проблемы синтаксиса опечатка во внешнем select и отсутствие псевдонима в подзапросе.

Это правильный запрос:

select tag, sum(tagCount) as tagCount 
from ((select tag1 as tag, count(*) as tagCount from videos GROUP BY tag1 
    ) UNION ALL 
     (select tag2 as tag, count(*) as tagCount from videos GROUP BY tag2 
    ) UNION ALL 
     (select tag3 as tag, count(*) as tagCount from videos GROUP BY tag3 
    ) UNION ALL 
     (select tag4 as tag, count(*) as tagCount from videos GROUP BY tag4 
    ) UNION ALL 
     (select tag5 as tag, count(*) as tagCount from videos GROUP BY tag5 
    ) 
    ) t 
GROUP BY tag; 

три ключевых изменения:

  • Фиксирующие внешний select пункт.
  • Использование UNION ALL вместо UNION.
  • Добавление псевдонима для подзапроса.
Смежные вопросы