MySQL есть один выбор для запроса различных несвязанных значений из базы данных? - PullRequest
1 голос
/ 11 марта 2010

Я где-то видел то, что казалось вложенными выборами, одним «главным» выбором на «снаружи» и серией выборов внутри - это возможно? Я не говорю о соединениях, так как между выборами существует особая связь.

Кажется, я не очень хорошо объясняю себя. Я хочу сделать один запрос, который вытащит ряд статистики из различных таблиц: последний заказ, последний клиент, самый большой заказ. Очевидно, я могу сделать это с помощью серии выборов.

Пример, который я видел, был что-то вроде

select (

 select ... from tbl_1 where ..,
 select ... from tbl_2 where ..,
 select ... from tbl_3 where ..,
 ...
)

Ответы [ 3 ]

3 голосов
/ 11 марта 2010

Я думаю, что вы спрашиваете о «Подвыборах» (или «Производные таблицы», «Вложенные запросы»).

Например //

SELECT colA, colB
FROM tableA
    INNER JOIN (
                SELECT colB, fk
                FROM tableB
                WHERE colC = 'Blah'
               ) ON tableA.pk = tableB.fk
ORDER BY colA, colB

Если это так, они были доступны начиная с версии 4.1 MySQL. [1]

С ними есть проблемы с производительностью, поэтому будьте осторожны, если думаете, что они будут работать так же, как и в других RDBMS. [2]

[1] http://dev.mysql.com/doc/refman/5.0/en/subqueries.html

[2] http://www.mysqlperformanceblog.com/2006/08/31/derived-tables-and-views-performance/

3 голосов
/ 11 марта 2010

Возможно UNION?

select *
from (
    select name, value from Table1
    union all
    select name, value from Table2
) a
order by name
0 голосов
/ 12 марта 2010

На самом деле все, что мне нужно, это следовать (извините)

SELECT d.parameter_value,tr.PARAMETER_VALUE 
FROM `maindb`.`tbl_parameter_despatch` AS d,tbl_parameter_transactionid AS tr ; 
...