Перейти к содержимому


Вычисление


Сообщений в теме: 23

#1 Рамиль Шарипов

    Участник

  • Пользователи
  • PipPip
  • 27 сообщений

Отправлено 25 Ноябрь 2013 - 22:07

Здравствуйте.

Как в одной таблице (№1) в поле "Номера телефонов" собрать номера телефонов из другой таблицы(№2)?

То есть в каждой строчке, в ячейке столбца "Номера телефонов" должно появиться "+7ааааааааа +7ббббббббб +7вввввввввв +7гггггггггггггг ит.д.".

Эти номера записаны в таблице №2. Там в каждой строчке по одному номеру.

Есть необходимость написать вычисление собирающее номера в одну ячейку таблицы №1.
При чем не совсем все номера а по условию совпадения названия города в текущей строчке таблицы №1 и названия города в поле "Город" таблицы №2.

#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 26 Ноябрь 2013 - 09:47

Т.е, я правильно понимаю, что в таблице 2 сейчас так:

Москва | +7ааааааааа
Москва | +7ббббббббб
Москва | +7вввввввввв
Новгород | +7гггггггггггг
Новгород | +7ддддддд

А в таблице 1 в итоге должно быть так:

Москва | +7ааааааааа +7ббббббббб +7вввввввввв
Новгород | +7гггггггггггг +7ддддддд
...............

?

#3 Рамиль Шарипов

    Участник

  • Пользователи
  • PipPip
  • 27 сообщений

Отправлено 26 Ноябрь 2013 - 17:25

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

#4 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 26 Ноябрь 2013 - 17:32

Вам нужно обратится запросом к таблице 2, с выборкой по городу, и соответственно пройдя по всем записям, собрать все телефоны в одну строку. Затем разместить полученный результат в поле "Номера телефонов" текущей записи таблицы 1.

#5 Рамиль Шарипов

    Участник

  • Пользователи
  • PipPip
  • 27 сообщений

Отправлено 26 Ноябрь 2013 - 18:01

а что значит обратиться запросом к таблице 2 с выборкой по городу?

#6 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 27 Ноябрь 2013 - 09:06

Запрос на выборку записей. Можно воспользоваться стандартным SQL-запросом "SELECT", но лучше использовать наши функции, например data_select:

$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 Рамиль Шарипов

    Участник

  • Пользователи
  • PipPip
  • 27 сообщений

Отправлено 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 Рамиль Шарипов

    Участник

  • Пользователи
  • PipPip
  • 27 сообщений

Отправлено 27 Ноябрь 2013 - 21:47

Давайте опишу то что мне надо полностью:

Таблица Заявки: Откуда | Куда | Телефоны водителей.
поля Откуда и Куда заполняются из внешней формы, поле Телефоны водителей заполняется путем вычисления при сохранении новой записи.

Таблица Водители: Имя | Город | Утром с | Вечером до | Статус работы | Баланс | Стоимость | Телефон
(Утром с и Вечером до это время когда водитель хочет принимать сообщения, список чисел 7:00, 8:00 ,9:00 и 21:00, 22:00, 23:00).
(Статус работы: списком "работаю" и "отдыхаю").

В вычислении требуется в одной ячейке (в поле Телефоны водителей) собрать через запятую телефоны всех водителей удовлетворяющих сразу всем условиям:
Откуда==Город,
Куда==Город,
Текущее время > Утром с,
Текущее время < Вечером до,
Статус работы == "работаю",
Баланс >= Стоимость.

Также, хорошо бы в этом же вычислении уменьшить Баланс на Стоимость для всех водителей удовлетворяющих вышеприведенным условиям.

В результате имеем список телефонов через запятую в одной ячейке таблицы Заявки в поле Телефоны водителей.

Сообщение отредактировал Рамиль Шарипов: 27 Ноябрь 2013 - 21:48


#9 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 28 Ноябрь 2013 - 09:27

Просмотр сообщенияРамиль Шарипов (27 Ноябрь 2013 - 18:17) писал:

результат дает "0".

Ноль может быть только если вы что-то напутали с кодами полей. Должны быть либо пустая строка, либо список телефонов. Отправьте тогда заявку в техподдержку с доступом, т.к. сложно производить отладку вслепую.

#10 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 28 Ноябрь 2013 - 11:03

Не обратил сразу внимание. У вас нет в таблице 1 (Заявки) поля Город, есть Откуда и Куда, тогда как в своем варианте вычисления вы оставили "Город" без изменения, естественно что в этом случае запрос ничего не даст. Подставьте нужный вариант поля.

По второй таблице вроде все корректно.

#11 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 28 Ноябрь 2013 - 11:09

Просмотр сообщенияРамиль Шарипов (27 Ноябрь 2013 - 21:47) писал:

В вычислении требуется в одной ячейке (в поле Телефоны водителей) собрать через запятую телефоны всех водителей удовлетворяющих сразу всем условиям:
Откуда==Город,
Куда==Город,
Текущее время > Утром с,
Текущее время < Вечером до,
Статус работы == "работаю",
Баланс >= Стоимость

Так добавьте все эти условия в запрос, по аналогии с городом выше, и получите то что вам надо.

#12 Рамиль Шарипов

    Участник

  • Пользователи
  • PipPip
  • 27 сообщений

Отправлено 28 Ноябрь 2013 - 16:05

Просмотр сообщенияCbCoder (28 Ноябрь 2013 - 11:03) писал:

Не обратил сразу внимание. У вас нет в таблице 1 (Заявки) поля Город, есть Откуда и Куда, тогда как в своем варианте вычисления вы оставили "Город" без изменения, естественно что в этом случае запрос ничего не даст. Подставьте нужный вариант поля.

По второй таблице вроде все корректно.

В предложенном вами вычислении есть поле Город, которое надо было вставить из таблицы 2, я так и сделал.
Но то что нет поля с названием города из таблицы 1 мне показалось странным.
Ведь мне надо отобрать телефоны водителей проживающих в тех городах, которые указаны в заявке в полях Откуда и Куда, то есть в вычислении будут города и из таблицы 1 и из таблицы 2.

#13 Рамиль Шарипов

    Участник

  • Пользователи
  • PipPip
  • 27 сообщений

Отправлено 28 Ноябрь 2013 - 16:05

я написал в техподдержку, жду их ответа.

#14 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 28 Ноябрь 2013 - 16:11

Просмотр сообщенияРамиль Шарипов (28 Ноябрь 2013 - 16:05) писал:

В предложенном вами вычислении есть поле Город, которое надо было вставить из таблицы 2, я так и сделал.

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

#15 Рамиль Шарипов

    Участник

  • Пользователи
  • PipPip
  • 27 сообщений

Отправлено 28 Ноябрь 2013 - 16:31

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

А на главной странице вообще написано: Автоматизируй свой бизнес сегодня
без программистов и лишних затрат!

#16 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 28 Ноябрь 2013 - 16:41

Просмотр сообщенияРамиль Шарипов (28 Ноябрь 2013 - 16:31) писал:

расценки у вас есть в разделе который называется Персональная конфигурация, а мне не нужна Персональная конфигурация)

Любые изменения в стандартной конфигурации - это ее персонализация, полностью с нуля редко кто делает новую конфигурацию. Так что ваша конфигурация уже Персональная.

Цитата

А на главной странице вообще написано

Ну так никто вам и не мешает собрать конфигурацию без программистов - добавлять таблицы, поля, фильтры и т.д. Но возможность любой настройки всегда ограничена. Все что требует более сложной работы, как к примеру у вас с слиянием телефонов, все равно потребует программирования. В любом случае с КБ будет гораздо меньше работы (и затрат) чем писать программу с нуля под ваш бизнес.

#17 Рамиль Шарипов

    Участник

  • Пользователи
  • PipPip
  • 27 сообщений

Отправлено 28 Ноябрь 2013 - 17:16

Поинтересовался насчет платного задания. Оказалось что надо делать банковский перевод, в общем по времени неделя пройдет. Проще наверно нельзя было сделать. Обратился на фри-ланс.

#18 skazkin

    Новичок

  • Пользователи
  • Pip
  • 3 сообщений

Отправлено 14 Февраль 2014 - 13:15

Подскажите пож-ста как сделать выборку массива при помощи функции data_select_array()
1 вариант: из таблицы Контрагенты (номер таблицы 42) выбираем все поля ID (номер поля f912) и получаем массив.
2 вариант: из таблицы Контрагенты (номер таблицы 42) выбираем все поля ID (номер поля f912), у которых поле f2391 равно 1. Получаем массив.
Заранее благодарю.

#19 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 14 Февраль 2014 - 14:40

Вам обязательно что ли сразу массив всех строк нужен? Как правило, используют data_select с дальнейшим проходом через while ($row = sql_fetch_assoc($result)), этот вариант более безопасен. Выборка всего массива сразу может привести к вылету скрипта, в случае если в таблице достаточно много строк.

В любом случае, выборка записей через data_select_array и data_select абсолютно идентичны, за исключением добавления параметра ALL_ROWS, если вопрос только в этом.

#20 skazkin

    Новичок

  • Пользователи
  • Pip
  • 3 сообщений

Отправлено 15 Февраль 2014 - 00:48

Спасибо за предостережение, да данных в этой таблице может быть много. Подскажите как сделать такой запрос через data_select с дальнейшим проходом через while ($row = sql_fetch_assoc($result)).
Из таблицы Контрагенты (номер таблицы 42) выбираем все поля ID (номер поля f912), у которых поле f2391 равно 1.





Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных