Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Сумам сумм с условием
Форумы портала PHP.SU » » Кодировки и все смежное » Сумам сумм с условием

Страниц (1): [1]
 

1. stig - 11 Октября, 2018 - 15:36:27 - перейти к сообщению
Здравствуйте подскажите как написать запрос)
Есть 4 таблицы,
С одинаковой структурой:
Id; date; some_number

Нужно из каждой таблицы выбрать только те id,
У которых some_number в сумме по четырём таблицам будет равен например «6», за определенный заданный интервал date.

Буду рад любым идеям)
2. Мелкий - 11 Октября, 2018 - 15:41:42 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT id FROM
  2. (
  3.   SELECT id, some_number FROM tbl1 WHERE date BETWEEN ? AND ?
  4.   UNION ALL
  5.   SELECT id, some_number FROM tbl2 WHERE date BETWEEN ? AND ?
  6.   UNION ALL
  7.   SELECT id, some_number FROM tbl3 WHERE date BETWEEN ? AND ?
  8.   UNION ALL
  9.   SELECT id, some_number FROM tbl4 WHERE date BETWEEN ? AND ?
  10. ) d
  11. GROUP BY id
  12. HAVING sum(some_number) = ?
3. stig - 12 Октября, 2018 - 08:23:37 - перейти к сообщению
Мелкий пишет:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT id FROM
  2. (
  3.   SELECT id, some_number FROM tbl1 WHERE date BETWEEN ? AND ?
  4.   UNION ALL
  5.   SELECT id, some_number FROM tbl2 WHERE date BETWEEN ? AND ?
  6.   UNION ALL
  7.   SELECT id, some_number FROM tbl3 WHERE date BETWEEN ? AND ?
  8.   UNION ALL
  9.   SELECT id, some_number FROM tbl4 WHERE date BETWEEN ? AND ?
  10. ) d
  11. GROUP BY id
  12. HAVING sum(some_number) = ?


Спасибо! Идею понял, но есть еще вопрос, названия полей и их количество должны быть одинаковы во всех четырех таблицах?
я получил ответ на свой запрос - #1248 - Every derived table must have its own alias
Каждый подзапрос должен иметь уникальный псевдоним?

CODE (SQL):
скопировать код в буфер обмена
  1.  
  2.  SELECT tnum FROM
  3.     (
  4.       SELECT tnum, sum(hp10_gamma) AS summa FROM dose_rados WHERE date_change BETWEEN '2018-01-01'  AND  '2018-09-30'
  5.       UNION ALL
  6.       SELECT tnum, sum(dose) AS summa FROM doz_tld WHERE date BETWEEN '2018-01-01'  AND  '2018-09-30'
  7.       UNION ALL
  8.       SELECT tnum, sum(dose) AS summa FROM internal WHERE meash_date BETWEEN  '2018-01-01'  AND  '2018-09-30'
  9.       UNION ALL
  10.       SELECT tnum, sum(dose) AS summa FROM neutron_dose WHERE date '2018-01-01'  AND  '2018-09-30'
  11.     )
  12.     GROUP BY tnum
  13.     HAVING sum(summa) >='6'
  14.        
  15.         #1248 - Every derived table must have its own alias
  16.  
4. Мелкий - 12 Октября, 2018 - 10:18:36 - перейти к сообщению
stig пишет:
названия полей и их количество должны быть одинаковы во всех четырех таблицах?

Количество и типы полей для union all должны быть совместимы между всеми частями union all. К участвующим таблицам никаких требований нет.

stig пишет:
я получил ответ на свой запрос - #1248 - Every derived table must have its own alias
Каждый подзапрос должен иметь уникальный псевдоним?

Да. Обратите внимание, в моём запросе псевдоним указан.

 

Powered by ExBB FM 1.0 RC1