SELECT `order`.order_totalSumm FROM `order` WHERE `order_totalSumm` = 330
INNER JOIN `order_delivery_address` ON `order`.order_id = order_delivery_address.order_id
WHERE order_delivery_address.order_delivery_city != 'Москва'
OR order_delivery_address.order_delivery_city != 'Челябинск'
Могу ошибаться(базы под рукой нет). Но общий смысл такой, вывести записи, где город !Москва или сумма=330
Зачем вы используете анонимную функцию и перемешиваете запрос, когда можно обойтись без неё и выстраивать в более логичной последовательности? В одной из ваших же предыдущих тем я приводил пример.
Aleksey_ZX писал(а): ↑2017.01.16, 09:20
как то так
andWhere([
'or',
['!=','order_delivery_address_city', 'Москва'].
'order_delivery_address_city != "Москва"'
Aleksey_ZX писал(а): ↑2017.01.16, 10:04
и что же я насоветовал ??,
в одном месте опечатка вместо , поставил .
Одно и тоже, только по-разному собранное, вывели через or. У ТСа проблема в другом - ему нужно задать в запросе значения полей из разных таблиц. Если бы он изначально не изощрялся с запросом, то и проблемы такой не возникло.
Alexum писал(а): ↑2017.01.16, 12:27
Одно и тоже, только по-разному собранное, вывели через or. У ТСа проблема в другом - ему нужно задать в запросе значения полей из разных таблиц. Если бы он изначально не изощрялся с запросом, то и проблемы такой не возникло.
Для того что бы он мог выбрать, как удобнее. Если разные таблицы и поля совпадают то нужно прописывать таблицы.
А вообще в документации все написано. Я думаю, прочитав документацию, такие вопросы отпадут.
Alexum писал(а): ↑2017.01.16, 09:00
Зачем вы используете анонимную функцию и перемешиваете запрос, когда можно обойтись без неё и выстраивать в более логичной последовательности? В одной из ваших же предыдущих тем я приводил пример.
SELECT `order`.order_totalSumm FROM `order`
INNER JOIN `order_delivery_address` ON `order`.order_id = order_delivery_address.order_id
WHERE `order_totalSumm` = 330 AND order_delivery_address.order_delivery_city NOT IN('Москва', 'Челябинск')
ps. перед тем, как начинать строить запрос в yii2 было бы неплохо его таки написать в sql, проверить, и только после этого мучать фреймверк
rak писал(а): ↑2017.01.17, 19:58
зачем всё это? зачем условия прописывать в анонимной функции, если всё равно блок where будет один?
что вот это такое?
SELECT `order`.order_totalSumm FROM `order`
INNER JOIN `order_delivery_address` ON `order`.order_id = order_delivery_address.order_id
WHERE `order_totalSumm` = 330 AND order_delivery_address.order_delivery_city NOT IN('Москва', 'Челябинск')
ps. перед тем, как начинать строить запрос в yii2 было бы неплохо его таки написать в sql, проверить, и только после этого мучать фреймверк
С or напутал. Насколько я понял, ваш запрос выведет список, где сумма = 330 и город !=Москва и Челябинск. А надо вывести, где город =!Москва и Челябинск And 'order_delivery_data_courierId' => '51'. А также все заказы, где 'order_delivery_data_courierId' => '51' and 'order_totalSumm' => 330. Вторая часть запроса должна игнорировать условия первой части, например, если в Москве, есть заказ стоимостью 330 и курьером=51, то он должен попасть в выборку.
cruim писал(а): ↑2017.01.17, 20:18
С or напутал. Насколько я понял, ваш запрос выведет список, где сумма = 330 и город !=Москва и Челябинск. А надо вывести, где город =!Москва и Челябинск And 'order_delivery_data_courierId' => '51'. А также все заказы, где 'order_delivery_data_courierId' => '51' and 'order_totalSumm' => 330. Вторая часть запроса должна игнорировать условия первой части, например, если в Москве, есть заказ стоимостью 330 и курьером=51, то он должен попасть в выборку.
SELECT `order`.order_totalSumm FROM `order`
INNER JOIN `order_delivery_address` ON `order`.order_id = order_delivery_address.order_id
WHERE order_delivery_data_courierId=51 AND (order_delivery_address.order_delivery_city NOT IN('Москва', 'Челябинск') OR `order_totalSumm` = 330)