Подстановка имя таблицы из SELECT

Jon

Новичок
Есть таблица BRAND
id | url
--------
1 | bmw
2 | audi

Есть таблицы
parts_bmw
parts_audi
-------------------------------

Можно ли написать запрос чтобы название таблицы бралось из SELECT значения. ?

Скажем
SELECT * FROM parts_(SELECT url FROM brand WHERE id=1)

реально ли вообще такое?
 

prolis

Новичок
не реально, а вот хранить запчасти в одной таблице - самое оно
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Jon
ты бы описал задачу, которую решаешь. Потому как пока у тебя архитектура неправильная.
 

Jon

Новичок
c0dex
Делаю каталог запчастей, в одной таблице не хочется все делать, так как. Каждая таблица по 550-700 тыс позиций, и они раз в неделю обновляются. Поэтому и решил хранить все в разных таблицах.

prolis
база большая и ключи я думаю быстро кончатся(
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
1. не кончатся.
2. Продай слона.
Кстати, куда это ты там его посадил? :D
 

Jon

Новичок
1. у меня уже если все сложить около 2 758 000 ( а они обновлятся будут раз в неделю.
2. А эт не мой))) и сидит на женском теле) Хотя нет, на сескуальном женском теле)
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Боже, из-за 2 лямов записей придумывать такой звездец? Тебе оно надо? Храни все в 1 таблице с указанием на тип запчасти и т.д.
 

Jon

Новичок
c0dex
хм, не помню но там с чемто проблема была) типа UPDATE даных нельзя, все затираются при новой загрузке, привязка к номеру идет.
И хочется же чтото новое ))) а не стандартное)
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Jon
Ну вот, как вспомнишь что там у тебя при UPDATE затиралось - пиши. А пока что не советую изобретать велосипед)
 

Jon

Новичок
c0dex
согласен, даж если переделаю, все равно интересно какбы такое можно было бы реализовать, мучал пользовательские переменные в MySql, тож не помогли.
 

prolis

Новичок
(гореть мне в Ааа!...)
Код:
select * from (
select t1.*, 'bmw' as brand from parts_bmw t1
union all
select t2.*, 'audi' as brand from parts_audi t2
) t3, brand b
where b.url=t3.brand
and b.id=1
и всё-таки сделать надо одну таблицу, а при обновлении её грохать и создавать заного с новыми данными
 

Jon

Новичок
prolis
угу, уже делаю одну таблицу. неправильно в начале составил и вот на те, гемора поймал. учимся на ошибках :)
 

Jon

Новичок
c0dex
нашел вроде поему я разбивал на несколько таблиц. Короче если все проверять и делать UPDATE то обработка одного брена BMW скажем занимает 30 минут минимум. а если почистить таблицу и заново залить то 30 сек. вот почему разбил все
 

iceman

говнокодер
запчасти все в одну таблицу, и добавить FK на ID бренда
 

Jon

Новичок
iceman
он есть, яж говарю оооочень долго обработка всех данных идет если редактипрование цен. ну я и подумал а нафига, если привязка к номеру запчасти просто идет :)
 

iceman

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

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

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
И, что характерно, ни одного примера с show create table) И с тем как он там что обновляет.
 

Jon

Новичок
c0dex
ну обновлялось бонально, запихнул все данные с файла во временную таблица в базе, искался нужный номер запчасти в базе через SELECT и в случае удачного поиска срабатывал UPDATE а если не нашел то INSERT

может подскажет кто другие способы
 

iceman

говнокодер
ну ты же написал решение на 30сек, что тебе не хватает? твоя выгрузка должна быть 0,0001 сек?
это решение и предполагает хранить все в одной таблице, вопрос исчерпан?
 

iceman

говнокодер
кароче, создай еще одну таблицу, с такой же структурой как и рабочей

из файла с начало запихни все запчасти в новую таблицу, потом остается сделать 2 запроса:

1) insert (old_table) + select(new_table) + not exists(old_table);
2) update(old_table)+exists(new+table)

ну еще, после этого всего, очищаешь временную таблицу.

тоже самое по моему можно сделать с помощью одного запроса в MySQL, чтото типа merge, не помню :-(

ps как я понял ты делал вообще в ПХП в цикле? и на 1 запчасть в файле у тебя было 2 операции (select + update или insert)?
 
Сверху