Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Не работает WHERE при выборе из двух таблиц


Автор: letsgo 30.12.2010, 13:02
Здравствуйте.
Для составления запроса скрипту передаётся два параметра.
Первый -  currency (валюта)
Второй - max_price (максимальная цена)

Делаем такой запрос:
Код

SELECT `prices`.`price`$query_curr as price from `prices` WHERE `price` <= '$max_price'

Т.е. мы выбираем из таблицы `prices` все строки, в которых price меньше переменной $max_price.
Переменная $query_curr в запросе зависит от значения передаваемого параметра $currency,

Код

if ($currency == 1) $query_curr = " * (SELECT `value` FROM `valute` WHERE `numcode` = `prices`.`valute`)";

Т.е., если $currency == 0, $query_curr == пустота, а иначе мы делаем запрос на выборку из другой таблицы и умножаем ячейку 
`prices`.`price` на ячейку `valute`.`value`

Проблема состоит в следующем:

Если currency == 0, то условие выборки (
Код

where `price` <= '$max_price'
)  работает нормально, т.е. в результатах запроса нет строк, в которых `price` больше значения переменной $max_price,

НО, если currency == 1, то условие выборки не работает, т.е. в результатах запроса присутствуют строки, в значениях которых есть `price` больше переменной $max_price.

Т.е., если мы не обращаемся к другой таблице и не умножаем цену, то ограничение срабатывает, а если обращаемся, то вываливаются все результаты.
Подскажите, что делаю не так?

Спасибо.

Автор: skyboy 30.12.2010, 20:01
приведи структуру таблиц и логику,по которой должен работать запрос.
по запросу
Код

SELECT `prices`.`price`$query_curr as price from `prices` WHERE `price` <= '$max_price' 
* (SELECT `value` FROM `valute` WHERE `numcode` = `prices`.`valute`)

мало что можно понять.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)