Получение значения count (*) из нескольких таблиц - PullRequest
1 голос
/ 23 июня 2011

Я нашел решение моего запроса на этом сайте.Мне нужно получить значение счетчика (*) из нескольких таблиц Выбрать количество (*) из нескольких таблиц

Моя другая проблема - получить значения DATE для этих нескольких таблиц, которые возвращают> 1количество строкЯ должен сравнить даты и получить последние.Я должен запросить из 12 таблиц.Предполагая, что я получил> 1 значение для таблиц 1, 2, 3, 4, 5, мне нужно будет сравнить их значения DATE.Пример кода:

SELECT(SELECT COUNT(*) FROM   table1) AS count1,
(SELECT COUNT(*) FROM   table2) AS count2,
(SELECT COUNT(*) FROM   table3) AS count3 FROM dual

count1 count2 count3
  3       2     2

В этих таблицах мне нужно выбрать НАИБОЛЕЕ ПОСЛЕДНУЮ дату.

Select date from table1 order by date desc
Select date from table2 order by date desc
Select date from table3 order by date desc

Как мне это сделать без сканирования таблицы?

РЕДАКТИРОВАТЬ: Хорошо.В инструкции сказано: «Получить соответствующие записи из таблиц 1-12, используя идентификатор в качестве ключа».Если записей нет, отобразите «Запись не найдена». Остальное: получите запись с самой поздней датой, сравнив data_encoded из всех таблиц.

Ответы [ 2 ]

3 голосов
/ 23 июня 2011

Довольно сложно определить, к чему вы стремитесь, но вот предположение:

SELECT
    (SELECT MAX(date) FROM table1) AS latest1,
    (SELECT MAX(date) FROM table2) AS latest2,
    (SELECT MAX(date) FROM table3) AS latest3,
    -- etc
FROM dual;

Вы можете избежать сканирования таблиц, имея индексы на date, в этом случае оптимизатор должен выполнять индекстолько сканирование (очень быстрое).

0 голосов
/ 24 июня 2011

Вы пытаетесь сгруппировать их, заказать и выбрать первую дату

выберите идентификатор, дата, количество (дата) из таблицы 1 т1 внутреннее объединение table2 t2, где t1.id = t2.id внутреннее соединение table3 t3, где t1.id = t3.id так далее.. группировать по дате упорядочить по дате desc

что-то длинное в этой строке

...