Форум программистов, компьютерный форум, киберфорум
Наши страницы
MySQL
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
devid134
0 / 0 / 1
Регистрация: 13.07.2013
Сообщений: 35
1

Как записать запрос так чтобы их запрос суммировался в одну ячейку?

15.08.2014, 20:52. Просмотров 948. Ответов 8
Метки нет (Все метки)

Как записать этот запрос так чтобы их запрос суммировался в одну ячейку?
Перепробовал все что знал и все что подсказали, не получается

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
(SELECT COUNT(goods_id) AS count_rows
 FROM goods 
 WHERE goods_catalog IN
 (
  SELECT catalog_id FROM catalog WHERE parent_id = 404
  ) AND visible='1') 
 
UNION
 
(SELECT COUNT(goods_id) AS count_rows
FROM goods 
WHERE goods_catalog1 IN
(
SELECT catalog_id FROM catalog WHERE parent_id = 404
) AND visible='1'
)
Он у меня суммируется по отдельности вот так
Как записать запрос так чтобы их запрос суммировался в одну ячейку?

А нужно чтобы они суммировали в одну ячейку Вот так
Как записать запрос так чтобы их запрос суммировался в одну ячейку?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.08.2014, 20:52
Ответы с готовыми решениями:

Как записать этот запрос так чтобы их запрос суммировался в одну ячейку?
Как записать этот запрос так чтобы их запрос суммировался в одну ячейку?...

Как записать в свободную ячейку (ячейки) через запрос MySql
Привет! В таблице MySql хранятся закрашенные области (серый цвет), как...

Как правильно записать запрос с LIKE
Привет всем. Помогите разобраться с запросом поиска аромата (совпадение по...

Не учитывать ячейку если запрос пустой
Здравствуйте. Заранее извиняюсь, за название темы, не знал как написать. У меня...

Как изменить запрос чтобы отсортировать подкатегории по алфавиту
Есть таблица Как изменить запрос чтобы отсортировать подкатегории по алфавиту?...

8
cygapb-007
1306 / 938 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
15.08.2014, 22:10 2
devid134, тупо "в лоб" - так:
MySQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
select
(SELECT COUNT(goods_id) AS count_rows
 FROM goods 
 WHERE goods_catalog IN
 (
  SELECT catalog_id FROM catalog WHERE parent_id = 404
  ) AND visible='1') 
 
+
 
(SELECT COUNT(goods_id) AS count_rows
FROM goods 
WHERE goods_catalog1 IN
(
SELECT catalog_id FROM catalog WHERE parent_id = 404
) AND visible='1'
)
Добавлено через 9 минут
Проще - может быть, так:
MySQL
1
2
3
4
5
6
7
select count(*)
  -- как вариант (если могут быть равны одновременно):
  , sum((c.catalog_id=g.goods_catalog)+(c.catalog_id=g.goods_catalog1))
from goods g
join catalog c on c.catalog_id in (g.goods_catalog, g.goods_catalog1) 
  and c.parent_id = 404
where g.visible=1
0
devid134
0 / 0 / 1
Регистрация: 13.07.2013
Сообщений: 35
16.08.2014, 01:46  [ТС] 3
Почему то не получается(((
0
devid134
0 / 0 / 1
Регистрация: 13.07.2013
Сообщений: 35
16.08.2014, 02:05  [ТС] 4
Попытался различными способами, вот результат:
Несколько неудачных попыток
1 попытка (Попробовал соединить с помощью OR)
SQL
1
2
3
4
5
6
SELECT COUNT(goods_id) AS count_rows
FROM goods 
WHERE goods_catalog OR goods_catalog1 IN
(
SELECT catalog_id FROM catalog WHERE parent_id = $category
) AND visible='1'
Получил только результат только goods_catalog
Как записать запрос так чтобы их запрос суммировался в одну ячейку?



2 попытка (Попробовал соединить с помощью AND)
SQL
1
2
3
4
5
6
SELECT COUNT(goods_id) AS count_rows
FROM goods 
WHERE goods_catalog AND goods_catalog1 IN
(
SELECT catalog_id FROM catalog WHERE parent_id = $category
) AND visible='1'
Получил только результат только goods_catalog1
Как записать запрос так чтобы их запрос суммировался в одну ячейку?



3 попытка (Попробовал соединить с помощью обычно (+))
SQL
1
2
3
4
5
6
SELECT COUNT(goods_id) AS count_rows
FROM goods 
WHERE goods_catalog + goods_catalog1 IN
(
SELECT catalog_id FROM catalog WHERE parent_id = $category
) AND visible='1'
Получил в результате почему-то не сумму, а разницу (67-9=58)
Как записать запрос так чтобы их запрос суммировался в одну ячейку?


Если получается разница значит может получиться и сумму!
Подскажите как мне их суммировать пожалуйста!
0
cygapb-007
1306 / 938 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
16.08.2014, 13:48 5
devid134, дерзайте, испробованы еще далеко не все способы изобретения новых конструкций языка структурированных запросов

И ни в коем случае не читайте документацию по MySQL, это только убъет полет творческой мысли
0
devid134
0 / 0 / 1
Регистрация: 13.07.2013
Сообщений: 35
16.08.2014, 14:38  [ТС] 6
И дерзаю
Спасибо за ваш способ "Тупо в лоб" Я уже его пробовал только он не подходит для моего запроса

Мне нужно объединить 2 столбца в один и так чтобы это был 1 запрос
вроде такого способа
SQL
1
2
3
4
5
6
SELECT COUNT(goods_id) AS count_rows
FROM goods 
WHERE goods_catalog + goods_catalog1 IN
(
SELECT catalog_id FROM catalog WHERE parent_id = $category
) AND visible='1'
А на поиски к сожалению у меня не хватает времени да и специальность у меня совсем другая.
Чтобы ускорить процесс решил обратиться в этот форум специализированный в таких темах.
Зачем тогда нужны такие форумы если все будут сами все изучать?

Добавлено через 4 минуты
Кстати вот что нашел
mysql> SELECT 3+5;
-> 8

Почему тогда у меня получается разница?
И в Manual MySQL написано что знак (+) - Addition operator (Оператор сложения)
0
devid134
0 / 0 / 1
Регистрация: 13.07.2013
Сообщений: 35
16.08.2014, 18:12  [ТС] 7
Вот как выглядит мой запрос в целом
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
-- Основная категория:
(SELECT COUNT(goods_id) AS count_rows
 FROM goods 
WHERE goods_catalog = $category AND visible='1')
                
UNION    
 
-- Подкатегория:   
(SELECT COUNT(goods_id) AS count_rows
FROM goods 
WHERE goods_catalog IN
(
SELECT catalog_id FROM catalog WHERE parent_id = $category
) AND visible='1')
 
 
UNION
 
 
-- Основная категория1:               
(SELECT COUNT(goods_id) AS count_rows
FROM goods 
WHERE goods_catalog1 = $category AND visible='1')
 
UNION
     
-- Подкатегория1:  
(SELECT COUNT(goods_id) AS count_rows
FROM goods 
WHERE goods_catalog1 IN
(
SELECT catalog_id FROM catalog WHERE parent_id = $category
) AND visible='1')
Как вы уже наверное поняли он работал неправильно, мне нужно чтобы Основная категория суммировалась с Основной категорией1 и Подкатегория с Подкатегория1

Вот что выходило если выбрать допусти Основную категорию (Подставил вместо $category=405(ID Основной категории))
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
-- Основная категория:
(SELECT COUNT(goods_id) AS count_rows
 FROM goods 
WHERE goods_catalog = 405 AND visible='1')
                
UNION    
 
-- Подкатегория:   
(SELECT COUNT(goods_id) AS count_rows
FROM goods 
WHERE goods_catalog IN
(
SELECT catalog_id FROM catalog WHERE parent_id = 405
) AND visible='1')
 
 
UNION
 
 
-- Основная категория1:               
(SELECT COUNT(goods_id) AS count_rows
FROM goods 
WHERE goods_catalog1 = 405 AND visible='1')
 
UNION
     
-- Подкатегория1:  
(SELECT COUNT(goods_id) AS count_rows
FROM goods 
WHERE goods_catalog1 IN
(
SELECT catalog_id FROM catalog WHERE parent_id = 405
) AND visible='1')
Вот что получилось
Как записать запрос так чтобы их запрос суммировался в одну ячейку?



Теперь Подкатегория (Подставил вместо $category=404(Подкатегория))
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
-- Основная категория:
(SELECT COUNT(goods_id) AS count_rows
 FROM goods 
WHERE goods_catalog = 404 AND visible='1')
                
UNION    
 
-- Подкатегория:   
(SELECT COUNT(goods_id) AS count_rows
FROM goods 
WHERE goods_catalog IN
(
SELECT catalog_id FROM catalog WHERE parent_id = 404
) AND visible='1')
 
 
UNION
 
 
-- Основная категория1:               
(SELECT COUNT(goods_id) AS count_rows
FROM goods 
WHERE goods_catalog1 = 404 AND visible='1')
 
UNION
     
-- Подкатегория1:  
(SELECT COUNT(goods_id) AS count_rows
FROM goods 
WHERE goods_catalog1 IN
(
SELECT catalog_id FROM catalog WHERE parent_id = 404
) AND visible='1')
И тут получилось
Как записать запрос так чтобы их запрос суммировался в одну ячейку?


И мне подсказали как решить часть проблемы (Суммировать Основные категории и положить в одну ячейку)
Вот функция
SQL
1
2
3
SELECT COUNT(goods_id) AS count_rows
FROM goods 
WHERE (goods_catalog = 405 OR goods_catalog1 = 405)  AND visible='1'
Вот результат:
Как записать запрос так чтобы их запрос суммировался в одну ячейку?


И я попытался провернуть такое же с Подкатегорией но ка вы видели все безуспешно
Нужно чтобы когда в запросе спрашивают "Основную категорию", она выдавало Сумму (Основной категории и Основной категории1)
А когда в запросе спрашивают "Подкатегорию" , она выдавало Сумму (Подкатегории и Подкатегории1)

Вот попытался соединить запросы подставив для начала вместо $category=405(ID Основной категории)

SQL
1
2
3
4
5
6
7
8
9
10
11
12
(SELECT COUNT(goods_id) AS count_rows
FROM goods 
WHERE (goods_catalog = 405 OR goods_catalog1 = 405)  AND visible='1')
 
UNION 
 
(SELECT COUNT(goods_id) AS count_rows
FROM goods 
WHERE goods_catalog + goods_catalog1 IN
(
SELECT catalog_id FROM catalog WHERE parent_id = 405
) AND visible='1')
Основная категория работает Отлично
Как записать запрос так чтобы их запрос суммировался в одну ячейку?


А теперь тот же запрос только уже подкатегория, вместо $category=404(ID Подкатегории)
SQL
1
2
3
4
5
6
7
8
9
10
11
12
(SELECT COUNT(goods_id) AS count_rows
FROM goods 
WHERE (goods_catalog = 404 OR goods_catalog1 = 404)  AND visible='1')
 
UNION 
 
(SELECT COUNT(goods_id) AS count_rows
FROM goods 
WHERE goods_catalog + goods_catalog1 IN
(
SELECT catalog_id FROM catalog WHERE parent_id = 404
) AND visible='1')
Только происходит разница подкатегорий
Как записать запрос так чтобы их запрос суммировался в одну ячейку?

Как решить эту проблему?
Пожалуйста помогите разобраться неопытному
Прикладываю Базу данных
vopros.rar
0
devid134
0 / 0 / 1
Регистрация: 13.07.2013
Сообщений: 35
17.08.2014, 15:12  [ТС] 8
Неужели никто не поможет?
0
cygapb-007
1306 / 938 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
18.08.2014, 10:29 9
Цитата Сообщение от devid134 Посмотреть сообщение
Спасибо за ваш способ "Тупо в лоб" Я уже его пробовал только он не подходит для моего запроса
чем?
и чем не подходит второй вариант?
Цитата Сообщение от devid134 Посмотреть сообщение
Кстати вот что нашел
mysql> SELECT 3+5;
-> 8
Почему тогда у меня получается разница?
Замечательно! Но не останавливайтесь, подскажу следующий шаг:
mysql> select 3+5, 3+5 in (3,5), 3+5 in (4,6,8)

Добавлено через 39 минут
Ну и в довесок:
MySQL
1
2
3
4
5
select 1 
union all select 2 
 
union all 
select 4 union all select 8
в крайнем случае, можно просуммировать и попарно:
MySQL
1
2
3
select 
  (select 1)+(select 2), 
  (select 4)+(select 8)
0
18.08.2014, 10:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.08.2014, 10:29

Запрос.в одну таблицу
O_o походу уже приехал...сижу в ступоре! - подсчитайте общее количество...

Как нужно написать запрос чтобы тех товаров которых нет в наличии вывелись в конце
Нужно вытащить продукты с таблицы с 2 условиям 1. Вывести все товары с...

Как правильно создать запрос, чтобы в первой таблице вместо числового значения (ID_PRODUCENTA) высветилось (NAZWA_PRODUCENTA)
Здравствуйте. Есть две таблицы с идентичными колонами (ID_PRODUCENTA). Первая...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru