2010-07-15 7 views
0

Я должен переписать запрос, написанный для 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 и в таблице B в одном запросе но суммы() неверны (суммы (e) значения становятся суммой (e), умноженной на количество строк TABLEC)

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

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

ответ

2

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

Но независимо от этого, я не вижу причин, по которым вы объединили эти запросы в один, даже если вы используете MySQL 5.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; 

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

Смежные вопросы