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


data_select


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

#1 TelecomMedia

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

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

Отправлено 18 Июнь 2014 - 15:38

Для сбора показателей использую след. код:



$res = data_select_field(661, "sum(f17421) as summa", "status=0 AND f14181='New' AND f17571=",$line['Пользователь']);
$row = sql_fetch_assoc($res);
$line['Трафик'] = $row['summa'];

Здесь связь идет по полю Пользователь

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

#2 wondertalik

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

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 18 Июнь 2014 - 15:51

Просмотр сообщенияfabrika-r (18 Июнь 2014 - 15:38) писал:

Для сбора показателей использую след. код:



$res = data_select_field(661, "sum(f17421) as summa", "status=0 AND f14181='New' AND f17571=",$line['Пользователь']);
$row = sql_fetch_assoc($res);
$line['Трафик'] = $row['summa'];

Здесь связь идет по полю Пользователь

Есть необходимость собрать эти же данные в другую таблицу, которая никоим образом не связана с этой таблицей, т.е. возможно ли сделать запрос без поля связи?
Почему нет. Вам нужен только айди пользователя и его добавляете вместо $line['Пользователь']. Так как это по сути и есть айди пользователя.

#3 TelecomMedia

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

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

Отправлено 19 Июнь 2014 - 08:52

Я не совсем корректно наверное написал.

Данный код работает абсолютно корректно, ибо там есть поле связи.

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

#4 TelecomMedia

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

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

Отправлено 23 Июнь 2014 - 10:51

Неужели нет такого запроса?

#5 CbCoder

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

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

Отправлено 23 Июнь 2014 - 11:10

Просмотр сообщенияfabrika-r (23 Июнь 2014 - 10:51) писал:

Неужели нет такого запроса?

На ваш вопрос вряд ли кто ответит, т.к. сам вопрос крайне странно поставлен, абстрактным образом. Что значит "возможно ли сделать запрос без поля связи"? Разумеется можно составить какой угодно запрос, причем тут поле связи то? Кто вам вообще сказал что запрос можно составить только с полем связи? Задаете какие вам нужно условия запроса, и вперед. Поле связи используется только в частных случаях, где оно необходимо. Если же хотите более конкретный ответ, по условиям запроса, то обрисуйте более конкретно вашу задачу. Т.к. непонятно, из какой таблицы и что конкретно вы хотите выбрать.

#6 TelecomMedia

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

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

Отправлено 23 Июнь 2014 - 11:19

Ок, понял.

$res = data_select_field(661, "sum(f15811) as summa", "status=0 AND f14181='New'"); // собираем данные в т. 661 в поле 15811
$row = sql_fetch_assoc($res);
$line['Трафик в месяц'] = $row['summa'];

Полученный результат хочу поместить в т. 821, поле 19361.

Если необходимо больше конкретики, дайте знать.

Сообщение отредактировал CbCoder: 23 Июнь 2014 - 13:09


#7 CbCoder

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

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

Отправлено 23 Июнь 2014 - 13:14

1. В данном примере вы помещаете результат в поле в текущей записи ($line['Трафик в месяц']). Если требуется разместить результат в другую таблицу, используйте запрос на вставку или обновление записи (в зависимости от того что требуется), вместо последней строки.
2. Судя по запросу в примере, вы просто выкинули из него условие f17571=$line['Пользователь']. Вы уверены что в таком виде запрос вернет нужный результат? Хотя если это то что вам и надо - то пожалуйста.

#8 TelecomMedia

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

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

Отправлено 23 Июнь 2014 - 14:14

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

Мне нужно вывести сумму всех записей, подходящих под эти условия.

Сейчас выходит ошибка: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

#9 CbCoder

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

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

Отправлено 23 Июнь 2014 - 14:41

Опечатка очередная, следите за синтаксисом то...

#10 TelecomMedia

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

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

Отправлено 23 Июнь 2014 - 15:15

Спасибо.

Извиняюсь, все из-за невнимательности..

#11 TelecomMedia

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

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

Отправлено 24 Июнь 2014 - 12:18

Подскажите, пожалуйста, еще такой момент: можно ли в одном поле поместить результат обработки двух запросов?
Например, Кол-во счетов, сумма счетов

#12 CbCoder

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

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

Отправлено 24 Июнь 2014 - 12:25

Да хоть 10 запросов. Возможность поместить в поле 2 значения зависит только от его типа, если это "текст" - то никто не мешает, например как строку "Кол-во: 2, сумма: 3". Если число - то разумеется нет, т.к. в числовом поле можно записать только одно число, либо результат арифметической операции с числами. А как именно вы помещаете туда эти значения - через запросы, другие вычисления, или ручками - это уже принципиального значения не имеет.

#13 TelecomMedia

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

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

Отправлено 25 Июнь 2014 - 14:58

$result1 = data_select_field(43, "count(f454) as cnt_rec1", "status=0 AND f455=0 AND f839=",$line['Юр. название']['ID']);
$row1 = sql_fetch_assoc($result1);
$result2 = data_select_field(43, "sum(f454) as cnt_rec2", "status=0 AND f455=0 AND f839=",$line['Юр. название']['ID']);
$row2 = sql_fetch_assoc($result2);
$line['Счет'] = $row1['cnt_rec2'] UNION $row2['cnt_rec2'];

Ошибка:


5: $line['f19431'] = $row1['cnt_rec2'] UNION $row2['cnt_rec2'];
syntax error, unexpected T_STRING

Сообщение отредактировал fabrika-r: 25 Июнь 2014 - 14:58


#14 wondertalik

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

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 25 Июнь 2014 - 15:51

$line['f19431'] = $row1['cnt_rec2'] ." UNION ". $row2['cnt_rec2'];


#15 TelecomMedia

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

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

Отправлено 25 Июнь 2014 - 16:02

Ок, спасибо

Сообщение отредактировал fabrika-r: 25 Июнь 2014 - 16:02


#16 TelecomMedia

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

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

Отправлено 25 Июнь 2014 - 16:20

Просмотр сообщенияwondertalik (25 Июнь 2014 - 15:51) писал:

$row1['cnt_rec2'] 

Здесь ошибочка была

Сейчас выводит примерно следущее: 10 UNION 115003.

Можно убрать UNION и перенести второе значение на след. строчку?

#17 TelecomMedia

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

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

Отправлено 25 Июнь 2014 - 16:25

Подскажите, пожалуйста, где ошибка в данном коде:

$result = data_select_field(42, "count(f435) as cnt_rec", "date(f19481) BETWEEN '2014-06-01' AND '2014-06-30'", " AND status=0 AND f13191='Действующий' AND (f19471='Новый' OR f19471='Реквизиты') AND f2801=",$line['Пользователь']);
$row = sql_fetch_assoc($result);
$line['Новые -> Действ.'] = $row['cnt_rec'];

Выдается ошибка SQL запроса

#18 CbCoder

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

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

Отправлено 25 Июнь 2014 - 16:29

Цитата

Можно убрать UNION и перенести второе значение на след. строчку?

Ну так замените "UNION" на перевод строки, вы же сами его вставили? Перевод строки пишется через "\n".

#19 CbCoder

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

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

Отправлено 25 Июнь 2014 - 16:32

Цитата

Выдается ошибка SQL запроса

Во-первых, если хотите быстрой помощи, оптимально писать еще и текст ошибки. Это существенно ускорит поиск причины. Во-вторых, скорее всего из-за того, что у вас зачем то запятая между 2014-06-30 и AND

#20 CbCoder

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

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

Отправлено 25 Июнь 2014 - 16:35

Еще комментарий по данному коду:

$result1 = data_select_field(43, "count(f454) as cnt_rec1", "status=0 AND f455=0 AND f839=",$line['Юр. название']['ID']);
$row1 = sql_fetch_assoc($result1);
$result2 = data_select_field(43, "sum(f454) as cnt_rec2", "status=0 AND f455=0 AND f839=",$line['Юр. название']['ID']);
$row2 = sql_fetch_assoc($result2);
$line['Счет'] = $row1['cnt_rec1']."\n".$row2['cnt_rec2'];


Эти 2 запроса можно слить в один, т.к. таблица и условия одинаковы:

$result = data_select_field(43, "count(f454) as cnt_rec, sum(f454) as sum_rec", "status=0 AND f455=0 AND f839=",$line['Юр. название']['ID']);
$row = sql_fetch_assoc($result);
$line['Счет'] = $row['cnt_rec']."\n".$row['sum_rec'];







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

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