как связать 2 таблицы
#1
Отправлено 15 Март 2013 - 13:59
Есть 2 таблицы:
1. клиенты
2. заказы
в каждом заказе есть сумма
Как сделать так, чтобы у каждого клиента было поле в котором отображается сумма всех его заказов.
Сколько я не пытаюсь связывать 2 таблицы, у меня ничего не получается....
Кстати, разработчикам хотел сказать большое спасибо. Программа, похоже, очень хорошая, гибкая. Похоже можно реализовать все свои потребности. Но, конечно, разобраться трудновато... Я обычно с работаю с программой Filemacker, там и скрипты и все вычисления прописываются очень легко и интуитивно понятно.
#2
Отправлено 15 Март 2013 - 14:31
#3
Отправлено 15 Март 2013 - 14:59
1. клиенты
2. заказы
1. Пытался заказ привязать к клиенту
В таблице "заказ" сделал поле "имя клиента" типа "связь", и с помощью вычисления пытался вставить в него значение из поля "кто создал"
Получилось, что если поле "имя клиента" сделать типа "текст", то с помощью вычисления программа легко вставляет в него значение, а если сделать типа "связь", программа отказывается вставлять это значение.
2. И то же самое пытался сделать в обратном порядке от таблицы "клиенты" к таблице "заказы"
#4
Отправлено 15 Март 2013 - 16:31
Цитата
Получилось, что если поле "имя клиента" сделать типа "текст", то с помощью вычисления программа легко вставляет в него значение, а если сделать типа "связь", программа отказывается вставлять это значение.
У вас какие-то абсолютно неверные представления о полях в программе. В поле с типом "связь" хранится id связанной записи, а в поле "кто добавил" с типом "пользователь" - id пользователя программы. Ничего общего между ними нет.
#5
Отправлено 15 Март 2013 - 16:59
Цитата
Ну хорошо, а что тогда делать, если нужно связать таблицу "клиентов" и таблицу с их заказами. Через какие поля связывать, через какие Id?
Подскажите, пожалуйста, что я делаю не так и как это сделать лучше. Я же не прошу, чтобы вы всё за меня сделали. Пожалуйста, не нужно писать, что у меня неправильные представления и всё. Я понимаю, что для вас было бы гораздо лучше, если бы я составил техзадание и полностью оплатил вам разработку и не задавал "глупых вопросов". Но, похоже, так могут далеко не все. И зачем тогда создавать форум тех поддержки? Просто, чтобы мягко намекать, что "вы ничего не понимаете, лучше добровольно довериться профессионалам"?
#6
Отправлено 15 Март 2013 - 18:22
Цитата
Так вы уже это сделали - создали поле с типом "связь" в таблице "заказы" с таблицей "клиенты". Если же речь о том, как автоматически заполнить это поле при добавлении заказа текущим клиентом с помощью вычисления, то это уже другой вопрос. Тут простым присвоением одного поля другому, как вы пытались делать, не обойтись. Алгоритм будет такой:
1. Находим клиента в таблице "клиенты" по его id пользователя, через запрос к бд
2. Присваиваем id найденного клиента в поле связи с клиентом
#7
Отправлено 15 Март 2013 - 18:23
Цитата
Не совсем понял причины ваших эмоций. Разумеется я ни на что не намекал, а всего лишь констатировал факт + объяснил причины ошибочной работы. Разве вам не это нужно было? Я не хозяин фирмы и мне без разницы, будете вы платно что-то заказывать или нет.
#8
Отправлено 15 Март 2013 - 22:00
CbCoder (15 Март 2013 - 18:22) писал:
1. Находим клиента в таблице "клиенты" по его id пользователя, через запрос к бд
2. Присваиваем id найденного клиента в поле связи с клиентом
Спасибо большое, вы очень доходчиво всё описали. Вы правы, с эмоциями я действительно перестарался.
#9
Отправлено 15 Март 2013 - 23:26
Цитата
1. Находим клиента в таблице "клиенты" по его id пользователя, через запрос к бд
2. Присваиваем id найденного клиента в поле связи с клиентом
А можно Вас попросить дать мне пример такого кода? А я уже попробую его сам адаптировать. А то меня очень сильно расстраивает, что я не могу с этой, казалось бы, не сложной задачей справиться.
#10
Отправлено 15 Март 2013 - 23:29
#11
Отправлено 17 Март 2013 - 09:39
$org = data_table("Контрагенты","id='".$rekv['Организация']."'");//получаем данные из таблицы "Контрагенты", где id равен $rekv['Организация']
return $org['Адрес'];
Я правильно понял, что мне нужно оттолкнуться от этого кода?
#12
Отправлено 18 Март 2013 - 11:30
$data = data_table("Заказ","id=$ID");
$manager = $data['Автор'];
$sotr = data_table("Мои контактные данные","`Пользователь`='".$manager."'");
$boss = $sotr['E-mail'];
return $boss;
взял с этой страницы: http://clientbase.ru...16/php_samples/
#13
Отправлено 18 Март 2013 - 11:30
#14
Отправлено 18 Март 2013 - 12:44
Цитата
В целом да, вот только примеры вы взяли устаревшие. Там ведь написано по ссылке, что они для версии до 1.9.5. Или у вас на самом деле настолько старая версия программы?
Если нет, то, во-первых, получать данные из текущей строки запросом уже не нужно, все поля текущей строки лежат в переменной $line. Во-вторых, return сейчас тоже не используется, необходимо использовать прямое присвоение полю. Обо всем этом есть в текущей документации: http://clientbase.ru...6/calculations/
Т.о. по вашему вычислению будет примерно такой код:
$client = data_table("Контрагенты","`Пользователь`='".$line['Кто добавил']."'"); //получаем данные клиента из таблицы "Контрагенты", у которого поле "Пользователь" равно пользователю из поля "Кто добавил" текущей заявки $line['Клиент'] = $client['ID']; // заполняем поле связи "Клиент" текущей заявки значением из поля "ID" найденного нами клиента
#15
Отправлено 18 Март 2013 - 14:08
Количество пользователей, читающих эту тему: 2
0 пользователей, 2 гостей, 0 анонимных