[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: UPDATE таблиц с названием-маской
sjy19
Доброе утро, Форумчане!
Обращаюсь к вам для разъяснения/подсказки как быть с обновлением данных в таблице с названием-маской.
Ситуация следующая. В базе есть таблицы (каждая - содержит данные отчета экспедитора по поручению) с названием типа `otchet_odit_".$id."_".$kr_name."`Кратких имен экспедиторов (kr_name) может быть несколько у каждого номера поручения - id.
Вывожу селект из таблиц в цикле:
for($p=0;$p<count($exped_mas);$p++) //$exped_mas - массив с именами экспедов
{
$imya="SELECT * from `otchet_odit_".$id."_".$kr_name[$p]."` ";
}

Стоимости из таблицы
$stoim_ex=$rows['stoim_ex'];
$stoim_odit=$rows['stoim_odit'];

выводятся в цикле и при передаче их на страницу с апдейтом этот цикл естественно общий. Все данные из всех попавших под селект таблиц по одной колонке - в одном цикле. И как сделать апдейт в несколько таблиц вида `otchet_odit_".$id."_".$kr_name."`, если цикл со стоимостью общий для всех таблиц. Натолкните, плиз, на мысль как быть...
sergeiss
Цитата (sjy19 @ 4.12.2013 - 07:37)
Все данные из всех попавших под селект таблиц по одной колонке - в одном цикле. И как сделать апдейт в несколько таблиц вида `otchet_odit_".$id."_".$kr_name."`, если цикл со стоимостью общий для всех таблиц.

Есть у меня подозрение, что в данном случае триггер тебе поможет. Или просто функция/процедура в БД.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
killer8080
sjy19
у вас ошибка в архитектуре БД, отсюда и проблемы. Не нужно для каждого экспедитора создавать отдельную таблицу. Должна быть отдельно таблица экспедиторов
id | name | ...
и таблица отчетов
id | dispatcher_id | ...
Тогда не нужны будут циклы smile.gif
sjy19
killer8080
проблема в том, что экспедов может быть неопределенное количество, также и услуг, выполненных ими от 1 до 26 штук. А с отдельными таблицами , которые существуют временно до закрытия заказа, эти проблемы прекрасно решаются. Загвоздка только в том, как вывести правильно сразу из нескольких таблиц. Должно же быть какое-то решение...
killer8080
Цитата (sjy19 @ 4.12.2013 - 11:28)
проблема в том, что экспедов может быть неопределенное количество, также и услуг, выполненных ими  от 1 до 26 штук.

вот по тому не стоит делать индивидуальные таблицы, под каждого экспедитора wink.gif
Цитата (sjy19 @ 4.12.2013 - 11:28)
А с отдельными таблицами , которые существуют временно до закрытия заказа, эти проблемы прекрасно решаются.

так проблемы у вас и возникли как раз из-за такой архитектуры.
Цитата (sjy19 @ 4.12.2013 - 11:28)
Должно же быть какое-то решение...

правильным решением будет только одно - изменение структуры таблиц, все остальное костыльные решения.
Хотя бы потому, что после удаления одной из таблиц, в последовательности имен будут дырки, и простой цикл, как в вашем примере, уже не будет работать.
sergeiss
sjy19, ты слушай киллера, он плохого не посоветует smile.gif Я на тему архитектуры не подумал, а просто "прямо" ответил на твой вопрос. Он же верно заметил, что надо изменить структуру БД и тебя будет меньше головной боли.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Valick
killer8080, теперь я понял почему у тебя такой ник)) У меня тоже иногда возникает желание пустить пулю в лоб горе разработчикам которые лепят такие архитектуры БД, вот только толку от пули в пустой голове не так уж и много.

sjy19, не принимайте это лирическое отсупление близко к сердцу smile.gif

_____________
Стимулятор ~yoomoney - 41001303250491
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.