Добрый день!
Есть таблицы Товары (cb_data5), Отгрузки (одно из полей связи - id товара), Поставки (одно из полей связи - id товара).
Создаю вычисление в таблице "Поставки". Цель - вывод в заданное поле суммы отгруженного товара из данной поставки:
$sqlQuery = "SELECT sum(f76) as summa FROM cb_data8 AS a
INNER JOIN cb_data5 AS c ON a.f75=c.id
WHERE f292='".$line['ID']."' AND f75='".$line['Товары']."'";
Такой запрос не работает - выводит 0.
Если поправить элемент запроса AND f75='".$line['Товары']."' на AND f75='2' (т.е. подставить ID товара вручную - всё работает).
Такое ощущение, что $line['Товары'] передает в запрос какую-то фигню вместо ID (в самой базе данных в этом поле связи стоит именно ID). Как быть?
1
Сообщений в теме: 5
#1
Отправлено 17 Октябрь 2012 - 10:21
#2
Отправлено 17 Октябрь 2012 - 10:37
Поля связи в переменной $line разворачиваются в массив. Если связь действительно есть, в этом массиве содержатся поля из связанной записи. Если нет, только элемент $line['Товары']['raw'], где лежит непосредственное значение из БД. Таким образом, в вашем случае можно использовать либо $line['Товары']['ID'], либо $line['Товары']['raw'], что в данном коде практически равнозначно.
#3
Отправлено 17 Октябрь 2012 - 11:24
['raw'] в моём случае не решает проблему - выводит 0.
Поясню: "Товары" - это поле связи в таблице "Поставки" (дословно это поле говорит "какой товар в этой поставке"). Т.е. я хочу вывести суммарное число отгруженного товара (лимит по товару в данной поставке, не работает) из поставки (лимит по ID, всё работает).
Пробовал указывать AND f75='".$line['Поставки']['Товары']."' и AND f75='".$line['Товары']."' и AND f75='".$line['Товары']['raw']."' - не работает. Работает только если прямо указать ID товара (AND f75='2').
Поясню: "Товары" - это поле связи в таблице "Поставки" (дословно это поле говорит "какой товар в этой поставке"). Т.е. я хочу вывести суммарное число отгруженного товара (лимит по товару в данной поставке, не работает) из поставки (лимит по ID, всё работает).
Пробовал указывать AND f75='".$line['Поставки']['Товары']."' и AND f75='".$line['Товары']."' и AND f75='".$line['Товары']['raw']."' - не работает. Работает только если прямо указать ID товара (AND f75='2').
#4
Отправлено 17 Октябрь 2012 - 11:35
Цитата
Работает только если прямо указать ID товара (AND f75='2').
Еще раз повторюсь: f75='2' и f75='".$line['Товары']['raw']."' - равнозначно, если в поле "Товары" у вас действительно содержится ссылка на строку с id=2. Если у вас выводится 0 - значит в товарах у вас именно 0, а никак не 2.
#5
Отправлено 17 Октябрь 2012 - 11:38
Результат запроса вывожу как указано в документации:
$res = mysql_query($sqlQuery);
$row = mysql_fetch_array($res);
$line['После всех заказов'] = $row['summa'];
Возможно, в моём случае этот код не корректен?
$res = mysql_query($sqlQuery);
$row = mysql_fetch_array($res);
$line['После всех заказов'] = $row['summa'];
Возможно, в моём случае этот код не корректен?
#6
Отправлено 17 Октябрь 2012 - 12:23
Починил. В моём случае всё заработало так:
SELECT sum(f76) as summa FROM cb_data8
INNER JOIN cb_data7 ON cb_data8.f73=cb_data7.id
WHERE f75='".$line['Товар']['raw']."' AND
f292='".$line['ID']."' AND
cb_data7.f67!='Отказ'
SELECT sum(f76) as summa FROM cb_data8
INNER JOIN cb_data7 ON cb_data8.f73=cb_data7.id
WHERE f75='".$line['Товар']['raw']."' AND
f292='".$line['ID']."' AND
cb_data7.f67!='Отказ'
Количество пользователей, читающих эту тему: 2
0 пользователей, 2 гостей, 0 анонимных