[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: помогите составить запрос
Страницы: 1, 2
alekster
Добрый день.
Я новичок в mysql и поэтому нужна помощь в составлении запроса.
Работаю в CRM "Клиентская база" (clientbase.ru), где необходимо включать вычисления для автоматизации некоторых действий.
Задача у меня такая.
Я хочу получить отсортированный массив в котором будут содержатся строки в которых поле "незачет" будет равно нет. После чего мне необходимо выбрать случайную строку из этого массива и далее передать из этой строки поле "ФИО" в поле замена.

Ошибок код не выдает но и работать не хочет. (хотя думаю, что ошибки в синтаксисе есть)

Вот мой код:
f3720 - поле "незачет" (тип "список")
f483 - поле ФИО (тип текст)
f3710 - поле Замена (тип пользователь)


$yes = 'да';
$no = 'нет';

if (f3720 == $yes )
{
$mas = data_select_array(46, 'ALL_ROWS', "status=0 AND f3720"==",$no");
$query= "SELECT * FROM $mas ORDER BY RAND() LIMIT 1";
$sql_result=sql_query($query);
$row=sql_fetch_array($sql_result);
$line['f3710'] = $row['f483'];
}


Помогите пожалуйста кто разбирается
johniek_comp
update table set замена = (
select ФИО from table
where
незачет = 'нет'
order by rand()
limit 1 )


_____________
user posted image
alekster
Спасибо, сейчас попробую встроить в вычисления
alekster
Попытался встроить, возможно пока встраивал что-то сделал не так и код не работает - измененный код:


$no === "нет";

if(f3720 === "да")
{
$rec = "SELECT 'f483'
FROM "
.DATA_TABLE."46
WHERE 'f3720'=='"
.$no."'
ORDER BY RAND() LIMIT 1"
;
$line['f3710'] = "UPDATE ".DATA_TABLE."46 SET 'f3710' == '$rec'";
}
GET
'!==`
Цитата
SELECT 'f483'

Цитата
SET 'f3710'

Цитата
WHERE 'f3720'


Одинарная кавычка и обратная (где буква Ё) - разные вещи
должно быть:

SET `f3710` = '$rec'


и двойного равно тоже нет в MySQL

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
alekster
Спасибо за исправления, но видимо дело не только в этом .
GET
Цитата
Спасибо за исправления, но видимо дело не только в этом .

Как теперь выглядит код?

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
sergeiss
alekster, вот ты создал запрос, он у тебя в переменной $line находится. Ну так выведи эту строку, посмотри, что в ней содержится! Попробуй запустить запрос напрямую, через phpmyadmin.

И также учти, что имена переменных в ПХП начинаются со знака "доллар". Я вот про эту строку говорю
Цитата (alekster @ 6.07.2014 - 13:17)
if(f3720 === "да")

ПХП пытается найти константу с таким именем. Не находит. Тогда он предполагает, что это строка 'f3720' и она, естественно, никак не может быть равна 'да'. В итоге у тебя не вызывается весь блок, где формируется запрос.

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

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

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

user posted image
alekster

$no === "нет";

if(f3720 === "да")
{
$rec = "SELECT `f483`
FROM "
.DATA_TABLE."46
WHERE `f3720`='"
.$no."'
ORDER BY RAND() LIMIT 1"
;
$line['замена'] = "UPDATE ".DATA_TABLE."46
SET `f3710` = '
$rec'";
}
alekster
Цитата (sergeiss @ 6.07.2014 - 13:38)
alekster, вот ты создал запрос, он у тебя в переменной $line находится. Ну так выведи эту строку, посмотри, что в ней содержится! Попробуй запустит запрос напрямую, через phpmyadmin.

И также учти, что имена переменных в ПХП начинаются со знака "доллар". Я вот про эту строку говорю
Цитата (alekster @ 6.07.2014 - 13:17)
if(f3720 === "да")

ПХП пытается найти константу с таким именем. Не находит. Тогда он предполагает, что это строка 'f3720' и она, естественно, никак не может быть равна 'да'. В итоге у тебя не вызывается весь блок, где формируется запрос.

Дело в том что я работаю в CRM-системе где записи рода f3720 распознаются как поле(переменная) таблицы
sergeiss
Цитата (alekster @ 6.07.2014 - 13:39)
SET `f3710` = '$rec'";

Вот эту строку замени на
SET `f3710` = ($rec)";


И вот это
Цитата (sergeiss @ 6.07.2014 - 13:38)
Ну так выведи эту строку, посмотри, что в ней содержится! Попробуй запустить запрос напрямую, через phpmyadmin.

я тоже не просто так посоветовал :)

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

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

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

user posted image
alekster
sergeiss, У меня нет возможности проверить на phpmyadmin, потому что у меня установлена локальная версия данной CRM.

изменения в коде никак не повлияли на работу.
sergeiss
Цитата (alekster @ 6.07.2014 - 13:59)
У меня нет возможности проверить на phpmyadmin, потому что у меня установлена локальная версия данной CRM.

У тебя вообще нет MySQL или ты считаешь, что у тебя нет доступа к нему?

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

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

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

user posted image
alekster
sergeiss я не знаю где я могу найти ее. Я понимаю что для такой системы должен быть phpmyadmin, но я не знаю как туда зайти
sergeiss
phpmyadmin ты можешь поставить самостоятельно. Эта система никак не привязана ни к какой CRM или к чему бы то ни было. Главное, чтобы ты знал параметры доступа к MySQL: имя сервера, номер порта, имя БД, логин и пароль. Это может быть локальная БД, может быть БД в сети... Не принципиально.

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

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

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

user posted image
Быстрый ответ:

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