У меня 8 таблиц!
Вот запрос к одной таблицы (komments_lec):
<?
$result7 = mysql_query("SELECT avka,author,count(*) AS CNT FROM komments_lec GROUP BY author ORDER BY count(*) DESC LIMIT 7",$db);
$myrow7 = mysql_fetch_array($result7);
do
{
$r1 = $myrow7["CNT"];
printf ("<p>%s %s. Комментариев: $r1</p>",$myrow7["avka"],$myrow7["author"]);
}
while ($myrow7 = mysql_fetch_array($result7));
?>
Выводит все в нужном порядке с авкой и автором!!!!
Как мне зделать запрос к 8-ми таблицам???
Или мне надо вытаскивать данные отдельно с каждой таблицы, сумировать их, а потом уже выводить на страницу? Если да, то как это можно сделать (мы выводим не только числа, а й картинку с именем автора. Число додать то без проблем, а как быть с авкой и автором, как это правильно оформить)???
Спустя 1 час, 2 минуты, 22 секунды (21.02.2010 - 22:22) sergeiss написал(а):
Можно UNION использовать.
Спустя 8 минут, 47 секунд (21.02.2010 - 22:30) serzh написал(а):
а поподробнее можно?
Спустя 18 минут, 3 секунды (21.02.2010 - 22:48) sergeiss написал(а):
Во-первых, почитай вот тут http://phpforum.ru/index.php?showtopic=21916 о том, как ПРАВИЛЬНО работать с данными из БД (какой цикл использовать и т.д.)
Во-вторых, про UNION очень хорошо описано здесь.. Или ты думаешь, что пересказывание мануалов "на сон грядущий" - это одно из развлечений на форуме?
PS. А тему я перенесу в "PHP+SQL".
Во-вторых, про UNION очень хорошо описано здесь.. Или ты думаешь, что пересказывание мануалов "на сон грядущий" - это одно из развлечений на форуме?
PS. А тему я перенесу в "PHP+SQL".
Спустя 1 час, 28 минут, 11 секунд (22.02.2010 - 00:17) serzh написал(а):
Оператор UNION помог при выводе данных. Вот измененный код. Вывожу с двух таблиц:
Выводит авку, автора и количество сообщений с одной таблицы, а потом сразу же под этим с другой. Как эти данные можно объединить?
<?
$result5 = mysql_query('(SELECT avka,author,count(*) AS CNT FROM komments_lec GROUP BY author ORDER BY count(*) DESC LIMIT 7)
UNION
(SELECT avka,author,count(*) AS CNT FROM komments_metod GROUP BY author ORDER BY count(*) DESC LIMIT 7)');
$myrow5 = mysql_fetch_array($result5);
do
{
printf ("<p>%s %s. Комментариев: %s</p>",$myrow5["avka"],$myrow5["author"],$myrow5["CNT"]);
}
while ($myrow5 = mysql_fetch_array($result5));
?>
Выводит авку, автора и количество сообщений с одной таблицы, а потом сразу же под этим с другой. Как эти данные можно объединить?
Спустя 33 минуты, 52 секунды (22.02.2010 - 00:50) serzh написал(а):
Как мне правильно суммировать выведенный результат?
Спустя 57 минут, 51 секунда (22.02.2010 - 01:48) sergeiss написал(а):
Ты еще не прочитал по моей первой ссылке о том, как правильно выводить данные...
Спустя 54 минуты, 26 секунд (22.02.2010 - 02:43) serzh написал(а):
Да все я прочитал. Там написано, что оператор UNION объединяет выведенную информацию (например есть в одной таблице города, а в другой стадионы и мы с помощью команды UNION можем вывести информацию по городам и стадионам та обьеденить их в одной табличке). Но мне надо просуммировать количество комментариев с разных таблиц, где поле автор совпадает.
Попробовал я еще это сделать вот таким способом:
Но в итоге получил 7 одинаковых выведенных заметок!!!!
Попробовал я еще это сделать вот таким способом:
<?
$result7 = mysql_query("SELECT avka,author,count(*) AS CNT FROM komments_lec GROUP BY author ORDER BY count(*) DESC LIMIT 7",$db);
$myrow7 = mysql_fetch_array($result7);
$result8 = mysql_query("SELECT avka,author,count(*) AS CNT FROM komments_metod GROUP BY author ORDER BY count(*) DESC LIMIT 7",$db);
$myrow8 = mysql_fetch_array($result8);
$i = 1;
do
{
$aut1 = $myrow7["author"];
$aut2 = $myrow8["author"];
$num1 = $myrow7["CNT"];
$num2 = $myrow8["CNT"];
$av1 = $myrow7["avka"];
$av2 = $myrow8["avka"];
$i++;
if ($aut1 = $aut2)
{
$a3 = $num1 + $num2;
}
echo "$av1, $aut1 комментариев: $a3";
}
while ($i < 8);
?>
Но в итоге получил 7 одинаковых выведенных заметок!!!!
Спустя 7 часов, 57 минут, 29 секунд (22.02.2010 - 10:40) sergeiss написал(а):
Говоря про первую ссылку, я имел ввиду, что забудь про цикл do-while (в такой ситуации), и используй цикл while!
Далее.
Тебе нужен "сложный" запрос.
Вложенный - выбирает все нужные данные, с помощью UNION.
Полученная таблица обрабатывается точно также, как обычная. Только в ней уже группируются (в частности, суммируются) нужные элементы. Типа такой структуры я имею ввиду:
Далее.
Тебе нужен "сложный" запрос.
Вложенный - выбирает все нужные данные, с помощью UNION.
Полученная таблица обрабатывается точно также, как обычная. Только в ней уже группируются (в частности, суммируются) нужные элементы. Типа такой структуры я имею ввиду:
select ...., sum(...)
from
(
select ....
union
select ...
) all_data
group by ....
Спустя 1 день, 23 часа, 27 минут, 50 секунд (24.02.2010 - 10:08) serzh написал(а):
<?
$result = mysql_query("SELECT avka,author,count(*) AS CNT FROM
(SELECT avka,author,count(*) AS CNT FROM komments_lec)
UNION
(SELECT avka,author,count(*) AS CNT FROM komments_metod) all data
GROUP BY author ORDER BY count(*) DESC LIMIT 10");
while ($row = mysql_fetch_array($result))
{
echo "Авка : {$row['avka']} <br>" . "Имя : {$row['author']} <br>" . "Комментариев : {$row['CNT']} <br><br>";
}
?>
И все равно ничего не пашет. Ошибка в строке (while ($row = mysql_fetch_array($result))):
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in T:\home\localhost\wenst\index.php on line 143
Знатоки, подскажите что я сделал не так???
Спустя 8 часов, 12 минут, 27 секунд (24.02.2010 - 18:20) serzh написал(а):
при внидрении в код $result=mysql_query(....) or die( mysql_error() );
Мне выдало следующою ошибку: Every derived table must have its own alias!
Что именно у меня в коде не верно??? Вроде все же правильно делаю!!!!
Мне выдало следующою ошибку: Every derived table must have its own alias!
Что именно у меня в коде не верно??? Вроде все же правильно делаю!!!!
Спустя 6 часов, 23 минуты, 12 секунд (25.02.2010 - 00:44) serzh написал(а):
Подскажите хоть кто нибудь!!!
Спустя 9 часов, 47 минут, 49 секунд (25.02.2010 - 10:31) sergeiss написал(а):
Убери лишние скобки из запроса, да и вообще лишнее убери , т.е.
замени на такой запрос (не проверял, но должен работать)
Если, конечно, полученный результат соответствует твоим потребностям.
SELECT avka,author,count(*) AS CNT FROM
(SELECT avka,author,count(*) AS CNT FROM komments_lec)
UNION
(SELECT avka,author,count(*) AS CNT FROM komments_metod) all data
GROUP BY author ORDER BY count(*) DESC LIMIT 10
замени на такой запрос (не проверял, но должен работать)
SELECT *
FROM
(SELECT avka,author,count(*) AS CNT FROM komments_lec group by author
UNION
SELECT avka,author,count(*) AS CNT FROM komments_metod group by author) all data
ORDER BY CNT DESC LIMIT 10
Если, конечно, полученный результат соответствует твоим потребностям.
Спустя 15 часов, 32 минуты, 52 секунды (26.02.2010 - 02:04) serzh написал(а):
Проблему решил. Ошибка была в all data, а надо all_data. Вот рабочий код:
<?
$res = "SELECT *, count(*) AS CNT FROM
(SELECT author,avka FROM komments_lec
UNION ALL
SELECT author,avka FROM komments_metod) all_data
group by author order by count(*) desc limit 7";
$result7 = mysql_query($res);
while ($row = mysql_fetch_array($result7))
{
echo "Авка : {$row['avka']} <br>" . "Имя : {$row['author']} <br>" . "Комментариев : {$row['CNT']} <br><br>";
}
?>
Спустя 1 день, 14 часов, 51 минута, 44 секунды (27.02.2010 - 16:56) serzh написал(а):
Созрел ещо один ВОПРОС!!!
Вывожу последние заметки на сайте. Как вы уже поняли из нескольких таблиц. Написал запрос:
Но он мне выводит сразу по порядку последние заметки с одной таблицы, а потом последние с другой таблицы, а хотя они должни идти в перемешку!
Вывожу последние заметки на сайте. Как вы уже поняли из нескольких таблиц. Написал запрос:
<?
$rety = "SELECT * FROM
(SELECT date,title,tema FROM dani_metod
UNION
SELECT date,title,tema FROM dani_lec) all_data
ORDER BY date DESC LIMIT 10";
$tore = mysql_query($rety);
while ($last = mysql_fetch_array($tore))
{
printf ("<p align='left'><a class ='zametka' href='%s'> %s</a></a></p>",$last ["tema"], $last ["title"]);
}
?>
Но он мне выводит сразу по порядку последние заметки с одной таблицы, а потом последние с другой таблицы, а хотя они должни идти в перемешку!
Спустя 19 часов, 9 минут, 1 секунда (28.02.2010 - 12:05) serzh написал(а):
Можно ли вести поиск с нескольких таблиц. Вот запрос к одной таблице:
Все нормально пашет.
А ось запрос к двум таблицам:
Выдает ошибку: The used table type doesn't support FULLTEXT indexes
Можно ли вопще вести поиск в нескольких таблицах???
$tor = "SELECT * FROM dani_lec WHERE MATCH (title) AGAINST ('$search')";
$result = mysql_query($tor);
Все нормально пашет.
А ось запрос к двум таблицам:
$tor = "SELECT * FROM
(SELECT title FROM dani_lec
UNION ALL
SELECT title FROM dani_metod) all_data
WHERE MATCH (title) AGAINST ('$search')";
$result = mysql_query($tor);
Выдает ошибку: The used table type doesn't support FULLTEXT indexes
Можно ли вопще вести поиск в нескольких таблицах???
Спустя 6 дней, 2 часа, 12 минут, 1 секунда (4.03.2010 - 14:17) serzh написал(а):
ау??????????7