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


Фильтр по связанным таблицам


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

#1 kaganat

    Участник

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

Отправлено 29 Июнь 2015 - 14:00

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

sqlQuery = "SELECT * FROM ".DATA_TABLE."180 where status=0 and f190 = 'Процессор'";
$result = sql_query($sqlQuery);
$row = sql_fetch_array($result);

f190 = 'Процессор' - связанное поле

Подскажите пожалуйста, почему не фильтр не работает.

#2 CbCoder

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

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

Отправлено 29 Июнь 2015 - 17:41

Потому что в полях связи всегда хранятся id связанных записей, а не значения отображаемых полей. Т.е, в данном случае вы должны узнать значение ID строки связанной таблицы, в которой хранится значение "Процессор".

#3 kaganat

    Участник

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

Отправлено 30 Июнь 2015 - 07:18

id связанной таблицы равно f270
В данной ситуации мне так прописать:
sqlQuery = "SELECT * FROM ".DATA_TABLE."180 where status=0 and f270 = 'Процессор'";

#4 CbCoder

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

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

Отправлено 30 Июнь 2015 - 10:34

Вы совсем не поняли меня. Запрос должен быть такого вида:

sqlQuery = "SELECT * FROM ".DATA_TABLE."180 where status=0 and f190 = 111";

где 111 - id связанной записи, а не таблицы или поля. Запись - это строка таблицы. Id записи - это значение системного поля ID в данной строке. Или по другому, это значение параметра line в адресной строке просмотра записи. Например, у вас есть связанная таблица, где 3 строки:

ID Название
1 Мат.плата
2 Блок питания
3 Процессор

В этом случае, запрос с условием по полю связи со значением "Процессор" будет:

sqlQuery = "SELECT * FROM ".DATA_TABLE."180 where status=0 and f190 = 3";

т.к. id у нужной строки - 3.





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

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