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 » PHP » SQL и Архитектура БД » Возможно ли составить такой запрос, если да то как?

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

1. 3d_killer - 12 Декабря, 2013 - 14:47:06 - перейти к сообщению
Есть табличка
id | name | parent | count

нужно собрать массив с данными (выбрать все где parent=0 и отдельно достать сумму поля count где id элемента = count) двойной запрос с суммированием получается пока написал вот что, но понятное дело не работает:
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. "SELECT * FROM table_questions innner join (SELECT sum(count) FROM table_questions WHERE table_questions.id=table_questions.parent) AS count_child WHERE parent=:parent order by nomber"
  3.  
2. Panoptik - 12 Декабря, 2013 - 14:54:28 - перейти к сообщению
вы бы почитали то что написали, а потом по своим словам попытались понять что нужно сделать...

насколько я понял нужно найти все элементы у которых id = count и parent = 0, потом посчитать сумму столбца count этих элементов ну и дальше вообще не понятно что вам нужно

короче выражайтесь так, чтобы ребенок смог понять
3. 3d_killer - 12 Декабря, 2013 - 14:57:45 - перейти к сообщению
нет нужно выбрать все элемены у которых parent = 0 в то же время к каждому элементу выбрать сумму всех значений count у которых parent=id - текущего элемента
(Добавление)
пример значений
1 | 1.1 | 0 | 0
2 | 1.2 | 0 | 0
3 | 1.3 | 1 | 2
4 | 1.4 | 1 | 3
5 | 1.5 | 1 | 4
6 | 1.6 | 2 | 5
7 | 1.7 | 2 | 6

должен получить массив со значениями:
1 | 1.1 | 0 | (2+3+4)
1 | 1.2 | 0 | (5+6)

ну вроде правильно объяснил
4. Deonis - 12 Декабря, 2013 - 15:11:21 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT
  2.   `t1`.`id`,
  3.   `t1`.`name`,
  4.   `t1`.`parent`,
  5.   `t1`.`count`,
  6.   SUM(`t2`.`count`) AS `summa`
  7. FROM
  8.   `table_name` `t2`
  9.   INNER JOIN `table_name` `t1` ON (`t2`.`parent` = `t1`.`id`)
  10. WHERE
  11.   `t1`.`parent` = 0
  12. GROUP BY
  13.   `t1`.`id`,
  14.   `t1`.`name`,
  15.   `t1`.`parent`


Ссылочка на рабочий пример
5. EuGen - 12 Декабря, 2013 - 15:13:18 - перейти к сообщению
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT
  2.   a.id,
  3.   a.name,
  4.   SUM(b.`count`) AS sum_count
  5. FROM
  6.   t AS a
  7.     LEFT JOIN t AS b
  8.       ON a.id=b.parent
  9. WHERE a.parent=0
  10. GROUP BY a.id

?
6. 3d_killer - 12 Декабря, 2013 - 15:14:00 - перейти к сообщению
что то тут не то по запросу вижу, к 4 посту
7. Deonis - 12 Декабря, 2013 - 15:17:47 - перейти к сообщению
3d_killer пишет:
что то тут не то по запросу вижу, к 4 посту
Всё забываю, что на форуме парсер режет хеши в ссылке - вот так перейдете.
8. 3d_killer - 12 Декабря, 2013 - 15:18:04 - перейти к сообщению
А вот ваш запрос EuGen, то что нужно, спасибо

 

Powered by ExBB FM 1.0 RC1