Объединить подвыбор - PullRequest
0 голосов
/ 15 июля 2010

Мне нужно переписать запрос, написанный для mysql5, на mysql4.0, который не поддерживает подвыбор. У меня такой запрос:

select a,
       c,
       (select count(*) from A) as e 
          from (select b, sum(e) as a 
                  from B 
                 where h = "foo" 
              group by b) TABLEB,
       (select sum(d),
               count(*) as c 
          from C 
         where d = "bar") TABLEC

Я пытаюсь объединить TABLEA и TABLE B в один запросно результаты sum () неверны (значения суммы (e) становятся суммами (e), умноженными на количество строк таблицы)

Все сгруппированные значения становятся кратными действительным значениям (в зависимости от количества строк)).

Возможно ли преобразовать этот запрос только в один запрос для mysql 4.0 или мне придется разделить его на 3 запроса?

1 Ответ

2 голосов
/ 15 июля 2010

Почему в мире вы переходите на MySQL 4.0?Это древняя история, медленная, глючная и ненадежная.Если вы используете службу хостинга, на которой по-прежнему работает MySQL 4.0, переключитесь на другую службу хостинга.

Но независимо от этого, я не вижу причин, почему вы объединили эти запросы в один, даже если вы используете MySQL5.0.Результаты из каждой таблицы не имеют отношения к другим.

Просто выполните три запроса:

select b, sum(e) as esum from B where h = 'foo' group by b;

select sum(d) as dsum, count(*) as c from C where d = 'bar';

select count(*) as acount from A;

ps : используйте одинарные кавычки для строковых литералов в SQL.

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