Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Запрос ошибку выдает: MySQL:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax
 
 автор: ZAHTET   (04.04.2007 в 19:46)   письмо автору
 
 

У меня проблема,запрос вроде правильный а php что то не нравится!
вот запрос

SELECT t.forum as tforum, count(t.tid) as fnumst, count(p.pid) as fnumsp FROM phx_topics t LEFT JOIN phx_posts p WHERE p.topic=t.tid and t.forum='{$oll[fid]}'

а в результате вот что мне пишут

MySQL:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE p.topic=t.tid and t.forum='1'' at line 1


так где ошибка?

   
 
 автор: Trianon   (04.04.2007 в 20:05)   письмо автору
 
   для: ZAHTET   (04.04.2007 в 19:46)
 

Конструкция LEFT JOIN требует ON условия соединения таблиц.

   
 
 автор: ZAHTET   (04.04.2007 в 20:20)   письмо автору
 
   для: Trianon   (04.04.2007 в 20:05)
 

да,точно но при этом запросе

SELECT t.forum as tforum, count(t.tid) as fnumst, count(p.pid) as fnumsp FROM phx_topics t LEFT JOIN phx_posts p ON p.topic=t.tid WHERE t.forum='1'

тоже ошибку выдает!

MySQL:Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause

че это значит?

   
 
 автор: Trianon   (04.04.2007 в 20:55)   письмо автору
 
   для: ZAHTET   (04.04.2007 в 20:20)
 

Вы применяете смесь скаляров (t.forum) и агрегатов (count(t.tid)) в списке SELECT-полей
Такое можно писать лишь в том случае, если Вы сгруппируете строки результата по полям скаляров (укажете GROUP BY t.forum) . Иначе запрос теряет всякий смысл.

   
 
 автор: ZAHTET   (04.04.2007 в 22:09)   письмо автору
 
   для: Trianon   (04.04.2007 в 20:55)
 

в общем я с этой проблемой разобрался,но теперь у меня проблема более глубокая
Вот этот ацкий код

$base->query("SELECT cid,name as cname,position FROM phx_categories ORDER BY position");
            while($all = $base->fetch_array()) {
                $portal[$all['cid']]['id'] = $all['cid'];
                $portal[$all['cid']]['name'] = $all['cname']; 
                $base->query("SELECT * FROM phx_forums WHERE category = '{$all[cid]}'");
                while($oll = $base->fetch_array()) {
                    $base->query("SELECT count(t.tid) as fnumst,
 count(p.pid) as fnumsp FROM phx_topics t 
LEFT JOIN phx_posts p ON p.topic=t.tid 
WHERE t.forum='{$oll[fid]}'");
                         while($rol = $base->fetch_array()) {
                            $portal[$all['cid']]['forums'][] = array ('id' => $oll['fid'],
 'name' => $oll['name'], 
 'description' => $oll['description'], 
 'numst' => $rol['fnumst'], 
 'numsp' => $rol['fnumsp']);
                         }
                }
            }

Тут в общем выбирается только 1 категория,в чем проблема и где ошибка?Если нетрудно то можете помочь?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования