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

Форум MySQL

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Один запрос из нескольких таблиц

Сообщения:  [1-10]   [11-16] 

 
 автор: Spenser   (21.01.2011 в 12:17)   письмо автору
 
   для: Trianon   (21.01.2011 в 11:51)
 

Спасибо за информацию к размышлению!:) попробую посчитать по времени выполнения запрос что в моем случае предпочтительнее.

  Ответить  
 
 автор: Trianon   (21.01.2011 в 11:51)   письмо автору
 
   для: Spenser   (21.01.2011 в 11:43)
 

>(один сложный запрос ведь выполниться быстрее чем несколько мелких)?
Откуда такой вывод? Совершенно в этом не убежден. Скорее наоборот.

Если у Вас порядка 20 таблиц с одним и тем же полем, и к ним в качестве основных следуют одинаковые запросы, это повод пересмотреть всю схему БД (а может быть и модель данных).
Похоже, что она проектировалась не под те задачи, которые на ней пытаются решать.

Если это запросы неосновные, и погоды в производительности всего приложения не делают, Вы зря взялись за оптимизацию этого участка.

  Ответить  
 
 автор: Spenser   (21.01.2011 в 11:43)   письмо автору
 
   для: Trianon   (21.01.2011 в 11:24)
 

я так делал до этого. но начитавшись про оптимизацию запросов к БД я подумал объединить их в один запрос. думаете в данном случае это не целесообразно (объединение запросов) для увеличения скорости обработки запросов (один сложный запрос ведь выполниться быстрее чем несколько мелких)? просто кол-во таблиц может быть большим (относительно конечно большим) порядка 20-ти.

  Ответить  
 
 автор: Trianon   (21.01.2011 в 11:24)   письмо автору
 
   для: Spenser   (21.01.2011 в 11:20)
 

Выдать несколько независимых запросов
SELECT COUNT(*) FROM categories WHERE seoname='vodonagrevateli'

SELECT COUNT(*) FROM goods WHERE seoname='vodonagrevateli'

и т.д.

  Ответить  
 
 автор: Spenser   (21.01.2011 в 11:20)   письмо автору
 
   для: cheops   (21.01.2011 в 10:49)
 

Спасибо за помощь, теперь получаю нужные данные:)

  Ответить  
 
 автор: Spenser   (21.01.2011 в 11:20)   письмо автору
 
   для: Trianon   (21.01.2011 в 11:06)
 

я понял как мне получить количество записей.

вообще после запроса мне нужно получить только колво записей в таблица соответствующие условию. по запросу cheops'a все работает . или его можно как то упростить?

  Ответить  
 
 автор: Trianon   (21.01.2011 в 11:06)   письмо автору
 
   для: Spenser   (21.01.2011 в 11:04)
 

запрос cheops'а выдаст несколько строк (по числу таблиц).
Вы же выбираете только одну.

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

  Ответить  
 
 автор: Spenser   (21.01.2011 в 11:04)   письмо автору
 
   для: cheops   (21.01.2011 в 10:49)
 

Да, этот запрос как раз то что нужно. в него я могу добавлять сколько угодно (10-20 таблиц) или тогда он будет выполняться долго?
и еще, если я сделаю так:

$sql = mysql_query(запрос);
$fetch = mysql_fetch_row($sql);
print_r($fetch);


соответственно выдаст уже количество записей в объединенных таблицах?

  Ответить  
 
 автор: Trianon   (21.01.2011 в 10:51)   письмо автору
 
   для: cheops   (21.01.2011 в 10:49)
 

Вообще-то декартово произведение вариант соединения.
А объединение вовсе даже - UNION

  Ответить  
 
 автор: cheops   (21.01.2011 в 10:49)   письмо автору
 
   для: Spenser   (21.01.2011 в 10:46)
 

Вообще-то объединение - это декартово произведение, тут будет считаться только совпадающие записи. У меня подозрение, что вам вообще нужен UNION, т.е. что-то
SELECT COUNT(*) FROM categories
WHERE seoname='vodonagrevateli'
UNION
SELECT COUNT(*) FROM goods
WHERE seoname='vodonagrevateli'

в результате вы получите результирующу таблицу со столбцов цифр, сумма их даст количество всех записей во всех таблицах, удовлетворяющих условию WHERE seoname='vodonagrevateli'. Возможно вам это нужно?

  Ответить  

Сообщения:  [1-10]   [11-16] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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