Помогите с выборкой из БД

Статус
Закрыто для дальнейших ответов.

Daltonik

Well-Known Member
Регистрация
10.01.2010
Сообщения
120
Итак попорядку. У меня есть БД, в БД таблицы с товаром. К сожалению параметры у товара разные и пришлось делать разные таблицы для разного товара. Один параметр у всех товаров точно есть - это параметр ДАТА.
Мне нужно сделать вывод последних добавленных товаров по всем таблицам (от последнего до первого)... подскажите как сделать это?!
 

Daltonik

Well-Known Member
Регистрация
10.01.2010
Сообщения
120
Блин, голова и так шумит... а ты меня заставляешь еще и в справочнике рыться по МуСКУЛу... дядь, ну честно не до этого!!! Сплю по три часа в день...
 

medwoodu

Злобный модер
Регистрация
22.12.2005
Сообщения
1 418
Итак попорядку. У меня есть БД, в БД таблицы с товаром. К сожалению параметры у товара разные и пришлось делать разные таблицы для разного товара. Один параметр у всех товаров точно есть - это параметр ДАТА.
Мне нужно сделать вывод последних добавленных товаров по всем таблицам (от последнего до первого)... подскажите как сделать это?!
делайте разные запросы. Если одинаковые поля надо выбирать то UNION вам в помощь
 

Daltonik

Well-Known Member
Регистрация
10.01.2010
Сообщения
120
огромное спасибо ))) щас сижу читаю )) это просто спасает мой мозг )))

Ну вот смотрите... сначало мне для навигации надо посчитать общее количество строк во всех таблицах (их 13)...
Для одной таблицы стоит такой запрос:
$result00 = mysql_query("SELECT COUNT(*) FROM plitka ");
С UNION я пишу:
$result00 = mysql_query("SELECT COUNT(*) FROM plitka
UNION SELECT COUNT(*) FROM mebel_ruchki
UNION SELECT COUNT(*) FROM stolewnizu
UNION SELECT COUNT(*) FROM rakovinu
UNION SELECT COUNT(*) FROM smesiteli
UNION SELECT COUNT(*) FROM ymuvalniki
UNION SELECT COUNT(*) FROM plitka
UNION SELECT COUNT(*) FROM podokonniki
UNION SELECT COUNT(*) FROM vannu
UNION SELECT COUNT(*) FROM vannu_prenadleg
UNION SELECT COUNT(*) FROM vannu_nabor
UNION SELECT COUNT(*) FROM kaminu
UNION SELECT COUNT(*) FROM drag_kamen
UNION SELECT COUNT(*) FROM interer",$db);
и выдает ошибку!!! В чем проблема.
Аналогично в запросе когда я вытаскиваю элементы из таблицы для вывода их на страницу. Пишу запрос:
$result = mysql_query("SELECT * FROM tov ORDER BY date DESC,id LIMIT $start, $num",$db);
С UNION он выглядит так:
$result = mysql_query("SELECT * FROM plitka ORDER BY date DESC,id LIMIT $start, $num
UNION SELECT * FROM mebel_ruchki ORDER BY date DESC,id LIMIT $start, $num
UNION SELECT * FROM stolewnizu ORDER BY date DESC,id LIMIT $start, $num
UNION SELECT * FROM rakovinu ORDER BY date DESC,id LIMIT $start, $num
UNION SELECT * FROM smesiteli ORDER BY date DESC,id LIMIT $start, $num
UNION SELECT * FROM ymuvalniki ORDER BY date DESC,id LIMIT $start, $num
UNION SELECT * FROM plitka ORDER BY date DESC,id LIMIT $start, $num
UNION SELECT * FROM podokonniki ORDER BY date DESC,id LIMIT $start, $num
UNION SELECT * FROM vannu ORDER BY date DESC,id LIMIT $start, $num
UNION SELECT * FROM vannu_prenadleg ORDER BY date DESC,id LIMIT $start, $num
UNION SELECT * FROM vannu_nabor ORDER BY date DESC,id LIMIT $start, $num
UNION SELECT * FROM kaminu ORDER BY date DESC,id LIMIT $start, $num
UNION SELECT * FROM drag_kamen ORDER BY date DESC,id LIMIT $start, $num
UNION SELECT * FROM interer ORDER BY date DESC,id LIMIT $start, $num",$db);
Что делать, в чем я пишу неправильно и как написать правильно???
 

marker

Well-Known Member
Регистрация
23.10.2010
Сообщения
399
названия столбцов, таблиц, бд обособляйте в косые кавычки ``
например
Код:
SELECT COUNT(*) FROM `plitka`
еще можно задавать другие имена для полей которые выводит бд
например

Код:
SELECT COUNT(*) as count FROM
тогда вам не придеться доставать из запроса поле с именем COUNT(*), а вместо этого использовать `count`
 

Daltonik

Well-Known Member
Регистрация
10.01.2010
Сообщения
120
СOUNT - это опирация подсчета количества строк в БД, а не название поля... ну насколько я разбираюсь!!!

Не могли бы видя мои запросы написать правильный запрос... ну неполучаеться вообще в этом разобраться ((( а очень надо!!!
 

medwoodu

Злобный модер
Регистрация
22.12.2005
Сообщения
1 418
Зачем вам считать кол-во?
mysql 5?
union не может работать с count.
Код:
(SELECT tableName='table1', table1.id, table1.name AS name,table1.datecreate AS datecreate FROM table1 WHERE table1.datecreate > 2009-12-01)
UNION 
(SELECT tableName='table2', table2.id, table2.name AS name, table1.datecreate AS datecreate FROM table2 WHERE table2.datecreate > 2009-12-01)
ORDER BY datecreate DESC
вот так вы получите выборку всех записей на период больше заданной даты по порядку.tableName нужен для последущего определения откуда запись
 

Daltonik

Well-Known Member
Регистрация
10.01.2010
Сообщения
120
Количество полей нужно для навигации по сайту!!!
 

marker

Well-Known Member
Регистрация
23.10.2010
Сообщения
399
Количество полей нужно для навигации по сайту!!!
Лучше создайте файл или таблицу для подсчетов и при каждом добавлении в таблицу, что у вас там товара? добавлять 1 число к существующему.
Тоесть вести подсчет и записывать в поле. Каждый раз при таком геморое пусть даже и кешируються запросы туго для MySQL.
Вам нужно хорошенько упереться на быстродействие своего скрипта. Я конечно не грандмастер в этом вопросе, но очевидное нельзя отрицать.
 

medwoodu

Злобный модер
Регистрация
22.12.2005
Сообщения
1 418
Количество полей нужно для навигации по сайту!!!
тогда загоняйте все во временную таблицу
вообще структура сделана неверно.
правильно как то так:
table_osn id name ... все общие поля
table_1 id osn_id поля для типа 1 отношение идет 1-* т.е. либо эта запись либо в таблице 2 и т.д
и выборка тогда нужной записи делается leftjoin
 

Daltonik

Well-Known Member
Регистрация
10.01.2010
Сообщения
120
а как сделать временную таблицу???
 

medwoodu

Злобный модер
Регистрация
22.12.2005
Сообщения
1 418
http://www.spravkaweb.ru/mysql/sql/createtable гугл в помощь
 
Статус
Закрыто для дальнейших ответов.
Верх Низ