Вычисление
#1
Отправлено 25 Ноябрь 2013 - 22:07
Как в одной таблице (№1) в поле "Номера телефонов" собрать номера телефонов из другой таблицы(№2)?
То есть в каждой строчке, в ячейке столбца "Номера телефонов" должно появиться "+7ааааааааа +7ббббббббб +7вввввввввв +7гггггггггггггг ит.д.".
Эти номера записаны в таблице №2. Там в каждой строчке по одному номеру.
Есть необходимость написать вычисление собирающее номера в одну ячейку таблицы №1.
При чем не совсем все номера а по условию совпадения названия города в текущей строчке таблицы №1 и названия города в поле "Город" таблицы №2.
#2
Отправлено 26 Ноябрь 2013 - 09:47
Москва | +7ааааааааа
Москва | +7ббббббббб
Москва | +7вввввввввв
Новгород | +7гггггггггггг
Новгород | +7ддддддд
А в таблице 1 в итоге должно быть так:
Москва | +7ааааааааа +7ббббббббб +7вввввввввв
Новгород | +7гггггггггггг +7ддддддд
...............
?
#3
Отправлено 26 Ноябрь 2013 - 17:25
только в таблице 1 город записывается из внешней формы, а телефоны должны браться из таблицы 2 при сохранении.
#4
Отправлено 26 Ноябрь 2013 - 17:32
#5
Отправлено 26 Ноябрь 2013 - 18:01
#6
Отправлено 27 Ноябрь 2013 - 09:06
$result = data_select(222, "`f11`='",$line['Город'],"'"); // 222 - id таблицы 2, 11 - id поля "Город" в таблице 2 while ($row = sql_fetch_assoc($result)) { $phones.= $row['f22']." "; // собираем телефоны, 22 - id поля "Телефон" в таблице 2 } $line['Номера телефонов'] = $phones; // помещаем результат в поле
Все id естественно заменяете на свои.
#7
Отправлено 27 Ноябрь 2013 - 18:17
$result = data_select(211, "`f2831`='",$line['Город'],"'"); // 211 - id таблицы 2, 2831 - id поля "Город" в таблице 2
while ($row = sql_fetch_assoc($result))
{
$phones.= $row['f2841']." "; // собираем телефоны, 2841 - id поля "Телефон" в таблице 2
}
$line['Телефоны водителей'] = $phones; // помещаем результат в поле
результат дает "0".
#8
Отправлено 27 Ноябрь 2013 - 21:47
Таблица Заявки: Откуда | Куда | Телефоны водителей.
поля Откуда и Куда заполняются из внешней формы, поле Телефоны водителей заполняется путем вычисления при сохранении новой записи.
Таблица Водители: Имя | Город | Утром с | Вечером до | Статус работы | Баланс | Стоимость | Телефон
(Утром с и Вечером до это время когда водитель хочет принимать сообщения, список чисел 7:00, 8:00 ,9:00 и 21:00, 22:00, 23:00).
(Статус работы: списком "работаю" и "отдыхаю").
В вычислении требуется в одной ячейке (в поле Телефоны водителей) собрать через запятую телефоны всех водителей удовлетворяющих сразу всем условиям:
Откуда==Город,
Куда==Город,
Текущее время > Утром с,
Текущее время < Вечером до,
Статус работы == "работаю",
Баланс >= Стоимость.
Также, хорошо бы в этом же вычислении уменьшить Баланс на Стоимость для всех водителей удовлетворяющих вышеприведенным условиям.
В результате имеем список телефонов через запятую в одной ячейке таблицы Заявки в поле Телефоны водителей.
Сообщение отредактировал Рамиль Шарипов: 27 Ноябрь 2013 - 21:48
#9
Отправлено 28 Ноябрь 2013 - 09:27
Рамиль Шарипов (27 Ноябрь 2013 - 18:17) писал:
Ноль может быть только если вы что-то напутали с кодами полей. Должны быть либо пустая строка, либо список телефонов. Отправьте тогда заявку в техподдержку с доступом, т.к. сложно производить отладку вслепую.
#10
Отправлено 28 Ноябрь 2013 - 11:03
По второй таблице вроде все корректно.
#11
Отправлено 28 Ноябрь 2013 - 11:09
Рамиль Шарипов (27 Ноябрь 2013 - 21:47) писал:
Откуда==Город,
Куда==Город,
Текущее время > Утром с,
Текущее время < Вечером до,
Статус работы == "работаю",
Баланс >= Стоимость
Так добавьте все эти условия в запрос, по аналогии с городом выше, и получите то что вам надо.
#12
Отправлено 28 Ноябрь 2013 - 16:05
CbCoder (28 Ноябрь 2013 - 11:03) писал:
По второй таблице вроде все корректно.
В предложенном вами вычислении есть поле Город, которое надо было вставить из таблицы 2, я так и сделал.
Но то что нет поля с названием города из таблицы 1 мне показалось странным.
Ведь мне надо отобрать телефоны водителей проживающих в тех городах, которые указаны в заявке в полях Откуда и Куда, то есть в вычислении будут города и из таблицы 1 и из таблицы 2.
#13
Отправлено 28 Ноябрь 2013 - 16:05
#14
Отправлено 28 Ноябрь 2013 - 16:11
Рамиль Шарипов (28 Ноябрь 2013 - 16:05) писал:
Предложенное мной вычисление - это всего лишь образец, для того чтобы вы поняли принцип. По понятным причинам я не могу целиком за вас написать вычисление, учитывая все нюансы вашей конфигурации (хотя бы потому, что это платная услуга, на форуме мы всего лишь помогаем их писать).
#15
Отправлено 28 Ноябрь 2013 - 16:31
Надо лишь написать одно вычисление.
А на главной странице вообще написано: Автоматизируй свой бизнес сегодня
без программистов и лишних затрат!
#16
Отправлено 28 Ноябрь 2013 - 16:41
Рамиль Шарипов (28 Ноябрь 2013 - 16:31) писал:
Любые изменения в стандартной конфигурации - это ее персонализация, полностью с нуля редко кто делает новую конфигурацию. Так что ваша конфигурация уже Персональная.
Цитата
Ну так никто вам и не мешает собрать конфигурацию без программистов - добавлять таблицы, поля, фильтры и т.д. Но возможность любой настройки всегда ограничена. Все что требует более сложной работы, как к примеру у вас с слиянием телефонов, все равно потребует программирования. В любом случае с КБ будет гораздо меньше работы (и затрат) чем писать программу с нуля под ваш бизнес.
#17
Отправлено 28 Ноябрь 2013 - 17:16
#18
Отправлено 14 Февраль 2014 - 13:15
1 вариант: из таблицы Контрагенты (номер таблицы 42) выбираем все поля ID (номер поля f912) и получаем массив.
2 вариант: из таблицы Контрагенты (номер таблицы 42) выбираем все поля ID (номер поля f912), у которых поле f2391 равно 1. Получаем массив.
Заранее благодарю.
#19
Отправлено 14 Февраль 2014 - 14:40
В любом случае, выборка записей через data_select_array и data_select абсолютно идентичны, за исключением добавления параметра ALL_ROWS, если вопрос только в этом.
#20
Отправлено 15 Февраль 2014 - 00:48
Из таблицы Контрагенты (номер таблицы 42) выбираем все поля ID (номер поля f912), у которых поле f2391 равно 1.
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных