Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Подсчет сообщений в данной теме [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (3): « 1 [2] 3 »   

> Описание: Как реализовать выборку из двух таблиц
admroot
Отправлено: 17 Декабря, 2010 - 23:07:43
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




куда и как именно мне подставить LEFT | RIGHT JOIN

пробовал выполнить запрос в базе :

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT COUNT(*) FROM `table1`, `table2` RIGHT JOIN id ON (`table1`.`id` = `table2`.`tid`)


выдаол ошибку

CODE (SQL):
скопировать код в буфер обмена
  1. #1066 - Not unique table/alias: 'posts'


хотя поля id и уникальные

(Отредактировано автором: 17 Декабря, 2010 - 23:25:42)

 
 Top
Михаил
Отправлено: 17 Декабря, 2010 - 23:22:04
Post Id



Гость


Покинул форум
Сообщений всего: 112
Дата рег-ции: Июнь 2010  
Откуда: Армавир, Россия


Помог: 0 раз(а)




CODE (htmlphp):
скопировать код в буфер обмена
  1.  $query = mysql_query("SELECT COUNT(*) AS count FROM table1
  2.        LEFT JOIN table2 ON table1.id=table2.tid
  3.        WHERE table1.id=table2.tid");
  4.  
  5. $result = mysql_fetch_array($query);
  6. echo $result['count'];

как-то так...

(Отредактировано автором: 17 Декабря, 2010 - 23:23:36)

 
 Top
admroot
Отправлено: 17 Декабря, 2010 - 23:34:11
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. #1064 - 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 'mysql_query("SELECT COUNT(*) FROM `table1`, `table2` LEFT JOIN `table2` ON (`table2' at line 1
 
 Top
Михаил
Отправлено: 17 Декабря, 2010 - 23:39:15
Post Id



Гость


Покинул форум
Сообщений всего: 112
Дата рег-ции: Июнь 2010  
Откуда: Армавир, Россия


Помог: 0 раз(а)




admroot
Цитата:
пробовал выполнить запрос в базе :

CODE (SQL):
скопировать код в буфер обмена

1.
SELECT COUNT(*) FROM `table1`, `table2` RIGHT JOIN id ON (`table1`.`id` = `table2`.`tid`)



неправильный синтаксис

(Отредактировано автором: 17 Декабря, 2010 - 23:44:53)

 
 Top
admroot
Отправлено: 17 Декабря, 2010 - 23:45:49
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




точно, не увидел... но не пойму, запрос другой, а отображаются тоже везде единицы, три темы создал и в каждой написал по сообщению, а в четвертой 2 сообщения, но все равно единица отображается

кто то делал форумы с выводом числа сообщений в теме? Радость

(Отредактировано автором: 17 Декабря, 2010 - 23:49:19)

 
 Top
Мелкий Супермодератор
Отправлено: 17 Декабря, 2010 - 23:47:49
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Гораздо интереснее, как в код ошибки SQL попала mysql_query, которой там никак быть не может!

admroot, возьмите для начала какой-нибудь клиент к mysql (phpmyadmin тот же), отладьте запрос, чтобы он возвращал что вам нужно. Тогда уже будет легко его перенести на сторону PHP.


-----
PostgreSQL DBA
 
 Top
admroot
Отправлено: 17 Декабря, 2010 - 23:53:44
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




в phpmyadmin и отлаживаю, только логике запрос никак не может поддаться ) На русском это выглядит так: Выбрать все сообщения которые соответствуют данной теме (тема и сообщения связаны - тоесть table1.id = table2.tid)
 
 Top
Михаил
Отправлено: 17 Декабря, 2010 - 23:55:18
Post Id



Гость


Покинул форум
Сообщений всего: 112
Дата рег-ции: Июнь 2010  
Откуда: Армавир, Россия


Помог: 0 раз(а)




в SQL-запросе поменяйте местами table1 и table2
 
 Top
admroot
Отправлено: 17 Декабря, 2010 - 23:57:22
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




Михаил пишет:
в SQL-запросе поменяйте местами table1 и table2


как только не менял уже
 
 Top
Мелкий Супермодератор
Отправлено: 18 Декабря, 2010 - 00:03:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




admroot, давайте вы напишете, что вы от запроса хотите получить в итоге и какие таблицы с полями есть. Мне что-то кажется, что вы не оттуда идёте к цели.

Потому что дословно "Выбрать все сообщения которые соответствуют данной теме" - это запрос только к одной таблице, т.к. такая формулировка предполагает, что "эта тема" известна.


-----
PostgreSQL DBA
 
 Top
admroot
Отправлено: 18 Декабря, 2010 - 00:09:10
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. $query = mysql_query("SELECT COUNT(*) AS `count` FROM `table2` LEFT JOIN `table1` ON 1 WHERE 1");


кто подскажет почему так тоже прокатывает и mysql понимает также как и

CODE (SQL):
скопировать код в буфер обмена
  1. $query = mysql_query("SELECT COUNT(*) AS `count` FROM `table2` LEFT JOIN `table1` ON `table1`.`id` = `table2`.`tid` WHERE `table1`.`id` = `table2`.`tid`");

(Отредактировано автором: 18 Декабря, 2010 - 00:09:33)

 
 Top
evgenijj
Отправлено: 18 Декабря, 2010 - 00:12:27
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Есть некая таблица категорий (тем форума, разделов каталога и т.п.) и есть некая таблица items (постов темы или товаров некого раздела каталога и т.п.). Нам нужно выяснить, сколько постов в теме или сколько товаров в неком разделе каталога (например, сколько товаров в разделе телевизоры LG).


SQL:
скопировать код в буфер обмена
SELECT COUNT(*) FROM products a INNER JOIN categories b ON a.category=b.id WHERE b.id=17

Здесь я говорю: выбрать количество товаров в разделе с ID=17 (телевизоры LG)
А вот пример с форумом


SQL:
скопировать код в буфер обмена
SELECT COUNT(*) FROM posts a INNER JOIN themes b ON a.theme_id=b.id WHERE b.id=2056

Выбрать количество постов в теме "Как реализовать выборку из двух таблиц" (ID темы=2056)

(Отредактировано автором: 18 Декабря, 2010 - 00:14:43)

 
 Top
admroot
Отправлено: 18 Декабря, 2010 - 00:14:50
Post Id


Новичок


Покинул форум
Сообщений всего: 15
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




есть таблица с темами и таблица с сообщениями из этих тем , в каждой теме выводятся сообщения для текущей темы. вопрос: как узнать сколько сообщений в теме?

структура таблицы тем tible1: id, text, date

структура таблицы сообщений tible2: id, tid, text, date
(Добавление)
evgenijj пишет:
SELECT COUNT(*) FROM posts a INNER JOIN themes b ON a.theme_id=b.id WHERE b.id=2056


но у меня же надо выяснить не в конкретном id, а в нескольких....

то есть есть темы (и будут еще) с id 1,2,3.....500 и тд. они выводятся списком, и при нажатии на определенную тему, выскакивают сообщения которые соответствуют данной теме... как реализовать вывод колличества сообщений в данной теме (темы выводятся списком do while)
 
 Top
evgenijj
Отправлено: 18 Декабря, 2010 - 00:26:25
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Цитата:
есть таблица с темами и таблица с сообщениями из этих тем , в каждой теме выводятся сообщения для текущей темы. вопрос: как узнать сколько сообщений в теме?

Разве я не объяснил?

P.S. Приветствую такую тягу к знаниям Улыбка Написать свой форум -- это хорошая практика для новичка. Может быть, тебе (ничего, что на ТЫ?) будет интересно:
http://webmasterschool[dot]ru/articles/
Там внизу, есть десяток статей о том, как я сам писал форум, и как набивал себе шишки Улыбка
 
 Top
Мелкий Супермодератор
Отправлено: 18 Декабря, 2010 - 00:27:47
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




admroot пишет:
то есть есть темы (и будут еще) с id 1,2,3.....500 и тд. они выводятся списком, и при нажатии на определенную тему, выскакивают сообщения которые соответствуют данной теме... как реализовать вывод колличества сообщений в данной теме (темы выводятся списком do while)

Таки надо не в одной конкретной, а получить список тем и количество сообщений в каждой?

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT count(`id`) AS `count`, tible1.text FROM tible2 LEFT JOIN tible1 ON (tible1.id=tid) GROUP BY tid


PS: результат выводится while(){} а не непонятным бредом do{}while


-----
PostgreSQL DBA
 
 Top
Страниц (3): « 1 [2] 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB