Подвыборы или что-то более элегантное? - PullRequest
1 голос
/ 31 августа 2011

Трудно объяснить, что именно я пытаюсь сделать, поэтому вот запрос, который уже работает:

SELECT
(SELECT COUNT(cars) '. HUGE_FROM_LIST .' '. HUGE_WHERE_QUERY .' AND cars > 0 ) AS cars,
(SELECT COUNT(houses) '. HUGE_FROM_LIST .' '. HUGE_WHERE_QUERY .' AND houses_type = 8 ) AS houses8,
...

Таким образом, я получаю два результата, сообщающих мне, сколько машин и домов типа 8имеются.Я не хочу делать один запрос для каждого результата, поэтому я попытался отобрать.

Я делаю отбор, так что одиночные запросы зависят только от их собственных ГДЕ.Проблема в том, что HUGE_FROM_LIST и HUGE_WHERE_QUERY повторяются каждый раз, и все становится действительно большим.

Есть ли что-нибудь более элегантное?

Ответы [ 2 ]

1 голос
/ 05 сентября 2011
SELECT
    COUNT(IF(cars > 0, TRUE, NULL)) AS cars,
    COUNT(IF(houses_type = 8, TRUE, NULL)) AS houses8,
    ...
'. HUGE_FROM_LIST .'
'. HUGE_WHERE_QUERY
0 голосов
/ 31 августа 2011

Я не уверен, почему вы не хотите делать несколько запросов, но независимо от того, как вы это делаете ... если у вас есть SELECT критерии (логика), которые будут повторяться во многих разных местах, тогда это можетхорошая идея заключить эту логику в одно представление.Затем вы можете просто обратиться к представлению, когда вам нужно получить эти данные, используя эту логику.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...