MySQL: создание набора данных с несколькими предложениями where - PullRequest
0 голосов
/ 30 июня 2011

У меня разные запросы MySQL SELECT, все с разными операторами where.Они производят итоги, уникальные итоги, итоги определенного типа.

Так, например:

Loc    | total | unique | missing

London | 10 | 5 | 2

New York |20 |10 |5

В настоящее время я выполняю каждый из этих запросов Select отдельно, но я бы предпочел выполнитьих все сразу.Есть ли способ сделать это в MySQL?

Что-то вроде:

SELECT
    Location
    Count(total)
    SELECT 
        count(unique)
    FROM
        .. my tables..
    WHERE
        .. where clause for unique part ..
    GROUP BY
        unique
FROM
    .. my tables ..
WHERE
    .. where clause for total part ..
GROUP BY
    total

Ответы [ 3 ]

2 голосов
/ 30 июня 2011

Возможно, вам нужен UNION

SELECT * from table where...
UNION
SELECT * from table where...

Очевидно, столбцы, возвращаемые при каждом запросе, должны быть одинаковыми.

0 голосов
/ 01 июля 2011

Спасибо всем.Для всех, кто пытался справиться с этим, мое окончательное решение было:

SELECT
   Geo,
   total,
   SUM(unique) as unique
FROM
   (SELECT
      Geo,
      COUNT(total) AS total,
      0 unique,
    FROM
      -- my tables --
    WHERE
      -- where clause for totals --
    GROUP BY 
      Geo)
  UNION
    (SELECT
      Geo,
      0 total,
      COUNT(unique) AS unique,  
     FROM
       -- my tables --
     WHERE 
       -- where clause for unique --
     GROUP BY
       Geo)
) as tmptable
GROUP BY 
   Geo   
0 голосов
/ 30 июня 2011

Я ожидаю, что подзапрос (или несколько) в порядке.

select location, (select count(total)  
                  from totalTable
                  where totalTable.location = locationTable.location) as total,
                 (select count(uniqe)
                  from uniqeTable
                  where uniqeTable.location = locationTable.location) as uniqe,
                 (select count(missing)
                  from missingTable
                  where missingTable.location = locationTable.location) as missing
from locationTable
where locationCriteria = searchCriteria

При необходимости вы можете ссылаться на одну и ту же таблицу в нескольких подзапросах - просто попробуйте объединить их по идентификаторам, предпочтительно по тем, которые правильно проиндексированы.Очевидно, что предложения where должны быть скорректированы по мере необходимости.

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