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

Форум MySQL

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

 

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

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

тема: count из двух таблиц по общему полю
 
 автор: lilu   (28.09.2006 в 12:48)   письмо автору
 
 

Вообщем смотрела я похожие примеры и запуталась совсем и как-то раньше не сталкивалась с подобными запросами, задача такая есть две таблицы table1 и table2. Запрос выглядит следующим образом :
select table1.pole2, table1.pole3, table1.pole4 from table1, table2
where table1.pole1=table2.pole1 AND table2.pole4='0' AND table1.pole2='dddddddddd';
надо кол-во записей кот. в результате выводится

   
 
 автор: Trianon   (28.09.2006 в 12:54)   письмо автору
 
   для: lilu   (28.09.2006 в 12:48)
 

>select table1.pole2, table1.pole3, table1.pole4 from table1, table2
>where table1.pole1=table2.pole1 AND table2.pole4='0' AND table1.pole2='dddddddddd';
>надо кол-во записей кот. в результате выводится

Количество записей добывается функцией count()

SELECT  COUNT(*) FROM table1, table2 
WHERE table1.pole1=table2.pole1 AND table2.pole4='0' AND table1.pole2='dddddddddd'

либо

SELECT  COUNT(*) 
  FROM table1 
    JOIN table2 ON table1.pole1=table2.pole1
WHERE table2.pole4='0' AND table1.pole2='dddddddddd'

   
 
 автор: lilu   (28.09.2006 в 13:43)   письмо автору
 
   для: Trianon   (28.09.2006 в 12:54)
 

про count я знаю, но мне нужен select table1.pole2, table1.pole3, table1.pole4, потому что потом я именно к этим полям обращаюсь далее, а count нужен для постраничной навигации

   
 
 автор: Trianon   (28.09.2006 в 16:55)   письмо автору
 
   для: lilu   (28.09.2006 в 13:43)
 

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

   
 
 автор: lilu   (28.09.2006 в 18:04)   письмо автору
 
   для: Trianon   (28.09.2006 в 16:55)
 

тогда я не пойму! Если у меня есть таблицы например таблица людей и товаров, и мне надо вывести из базы только тех, кто купил товар1, я еств-но напишу запрос сост. из двух таблиц, кот. соед-ся по общему. полю, а уж потом мне надо взять получившееся кол-во строк и вычислять кол-во страниц при опред-ом кол-ве записей на каждой странице. Так же двумя запросами... Или я что-то не дотягиваю....

   
 
 автор: Trianon   (28.09.2006 в 18:57)   письмо автору
 
   для: lilu   (28.09.2006 в 18:04)
 

Всё правильно понимаете. Общее число строк вытаскиваете запросом

SELECT  COUNT(*)  
  FROM table1  
    JOIN table2 ON table1.pole1=table2.pole1 
WHERE table2.pole4='0' AND table1.pole2='dddddddddd' 

А сами строки на конкретной странице - запросом:

SELECT  table1.pole2, table1.pole3, table1.pole4 from table1, table2 
  FROM table1  
    JOIN table2 ON table1.pole1=table2.pole1 
WHERE table2.pole4='0' AND table1.pole2='dddddddddd' 
LIMIT $rows_per_page, $first_row


Как вариант, можно использовать


SELECT  SQL_CALC_FOUND_ROWS 
    table1.pole2, table1.pole3, table1.pole4 from table1, table2 
  FROM table1  
    JOIN table2 ON table1.pole1=table2.pole1 
WHERE table2.pole4='0' AND table1.pole2='dddddddddd' 
LIMIT $rows_per_page, $first_row

и

SELECT FOUND_ROWS()

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

   
Rambler's Top100
вверх

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