Как грамотно составить запрос к MySQL?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
webgrig
Сообщения: 163
Зарегистрирован: 2015.10.29, 21:34

Как грамотно составить запрос к MySQL?

Сообщение webgrig »

Есть запрос на выборку из БД компаний с определенными параметрами.
Например вот такой:

Код: Выделить всё

SELECT * FROM `companyes`
WHERE (`status`=1)
AND (`companyes`.`published_at` < 1510754973)
AND ((`min_summ` <= '1500'))
AND ((`max_summ` >= '1500'))
AND ((`min_time` <= '65'))
AND ((`max_time` >= '65'))
AND ((`age_min` <= '25'))
AND ((`age_max` >= '25'))
Как составить запрос на выборку всех остальных компаний, которые не попали в предыдущую выборку?
Nex-Otaku
Сообщения: 831
Зарегистрирован: 2016.07.09, 21:07

Re: Как грамотно составить запрос к MySQL?

Сообщение Nex-Otaku »

Вопрос из серии школьной информатики. Нужно проинвертировать логические условия.

!(A AND B) = !A OR !B
caHek2x
Сообщения: 1240
Зарегистрирован: 2016.04.12, 20:41

Re: Как грамотно составить запрос к MySQL?

Сообщение caHek2x »

если вы эти компании и так достаете ...
то чтоб не мучить базу сверкой и отрицанием данного условие то "все остальные" это "все кроме этих"

Код: Выделить всё

//это ваш запрос:
$models = Companies::...->all()

//это все остальные:
$ids = ArrayHelper::getColumn($models, 'company_id');
$models2 = Companies::find()->where('not in', 'company_id', $ids)->all()
webgrig
Сообщения: 163
Зарегистрирован: 2015.10.29, 21:34

Re: Как грамотно составить запрос к MySQL?

Сообщение webgrig »

caHek2x писал(а): 2017.11.15, 18:02 //это все остальные:
$ids = ArrayHelper::getColumn($models, 'company_id');
$models2 = Companies::find()->where('not in', 'company_id', $ids)->all()[/code]
Спасибо, просто как все гениальное!
Auramel
Сообщения: 80
Зарегистрирован: 2017.11.17, 14:39
Откуда: Russia, Ufa
Контактная информация:

Re: Как грамотно составить запрос к MySQL?

Сообщение Auramel »

еще, как вариант, можно было заюзать new \yii\db\Query()->select()->from() и в таком духе
Ответить