Форум программистов, компьютерный форум, киберфорум
PostgreSQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
 Аватар для Уф
890 / 725 / 447
Регистрация: 13.07.2015
Сообщений: 2,277

Соединить данные из двух запросов по ключу

18.11.2015, 10:06. Показов 1428. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет. Подскажите как сделать простую вещь, допустим есть три таблицы

JavaScript
1
2
3
4
5
list:               info:                     qtys:
key name            key listkey val           key listkey val
1   a               1      1     2            1      1     1
2   b               2      1     2
3   c               3      2     2
Я хочу составить запрос чтобы выбрать все поля из таблицы info по listkey, и к тому же пририсовать к ним еще одну колону val из таблицы qtys с совпадением по ключу, но если информации нет, то она бы вставляла 0, а то если просто объединить таблицы условием WHERE info.listkey=qtys.listkey выдает только одну строчку.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.11.2015, 10:06
Ответы с готовыми решениями:

Как соединить данные с двух листов в один?
Здравствуйте. Есть 2 листа. Лист 1 : А В С 1 НомерГруппы Объект ...

Данные двух запросов в один datagrid
Добрый день не могли бы подсказать как вывести данные из двух таблиц в один datagrid. SqlDataAdapter sqlDataAdapter = new...

Как в одном отчете вывести данные двух запросов?
Добрый день! Ребят, тема такая: имею два запроса "доходы" и "расходы", необходимо сформировать отчет "доходы и расходы" в котором...

7
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
18.11.2015, 11:02
Цитата Сообщение от Уф Посмотреть сообщение
но если информации нет, то она бы вставляла 0
LEFT/RIGHT JOIN
0
 Аватар для Уф
890 / 725 / 447
Регистрация: 13.07.2015
Сообщений: 2,277
18.11.2015, 11:22  [ТС]
я не пойму как в джойне сумму вывысти, наверно надо было более конкретно задачу описать. Таблицы получается всего две. Товары, в которой написано имя товара и сколько штук его нужно сделать, во второй таблице Производство, там несколько записей, сколько произведено(т.е. производят не сразу все количество, а партиями), и мне надо их суммировать и присоединить имя товара, а если к нему еще нет партий то ставить 0.

Добавлено через 11 минут
Допустим так

Товары:
Карандаши
Ручки

Партии:
Карандаши 5
Карандаши 2

Мне нужно получить итог:
Карандаши 7
Ручки 0
0
21 / 21 / 4
Регистрация: 10.11.2015
Сообщений: 123
03.12.2015, 11:14
А какую СУБД вы используете? и структура таблиц какая?
Переведу, что сказал grossmeister на примере mysql

select tov,sum(kolvo) from tovar f left join partii using (tov) group by tov;
Миниатюры
Соединить данные из двух запросов по ключу  
1
 Аватар для Уф
890 / 725 / 447
Регистрация: 13.07.2015
Сообщений: 2,277
05.12.2015, 22:21  [ТС]
спасибо за ответ. база pgsql, вобщем я забросил пока эту идею, и сделал слияние таблиц с помощью php

PHP
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
require("db_conn2.php");
$query="SELECT ordlist.key, ordlist.name, qty, descr, status AS statkey, ordstatus.name AS status
        FROM public.ordlist, public.ordstatus
        WHERE ordstatus.key=ordlist.status AND orderkey='$_POST[ordkey]'
        ORDER BY ordlist.key DESC";
$retres = pg_query($query) or die('Error in '.basename($_SERVER['SCRIPT_NAME'], ".php").':'.pg_last_error());
$result = pg_fetch_all($retres);
//считаем приостановленные производства для каждого заказа
   $warn = "SELECT ordlist.key, COUNT(ordprod.key) AS warn
            FROM public.ordlist, public.ordprod
            WHERE ordprod.listkey=ordlist.key AND ordprod.status = '13'
            GROUP BY ordlist.key";
$warnexec = pg_query($warn) or die('ord_readlist: '.pg_last_error());
$warnres = pg_fetch_all($warnexec);
foreach($warnres as $k2 => $e2){
    foreach($result as $k => $e) { //подсунем результы в общий массив
        if($e2['key']==$e['key']) $result[$k]['status'] .= '<span style="font-weight:bold;color:red;"> ('.$e2['warn'].')!</span>';
    }
}
//считаем сколько деталей уже готово
$prod = "SELECT listkey, COALESCE(SUM(qtyfact),0) AS sum FROM public.ordprod GROUP BY listkey";
$prodexec = pg_query($prod) or die('ord_readlist: '.pg_last_error());
$prodres = pg_fetch_all($prodexec);
foreach($result as $k => $e) { //подсунем результы в общий массив
    $result[$k]['qtyprod'] = 0; //сначала пишем ноль
    foreach($prodres as $k2 => $e2){
        if($e2['listkey']==$e['key']) $result[$k]['qtyprod'] = $e2['sum']; //если есть инфа перезаписываем на число
    }
}
$json = json_encode($result);
echo $json;
Можно объединить первый и третий запрос
0
1267 / 980 / 385
Регистрация: 02.09.2012
Сообщений: 3,027
07.12.2015, 14:26
- без структуры базы (хотя бы частичной, касающейся упомянутых таблиц) ничего сказать нельзя
- что в вашем понимании объединить; у этих запросов разное кол-во полей, как вы их хотите объединить?
1
 Аватар для Уф
890 / 725 / 447
Регистрация: 13.07.2015
Сообщений: 2,277
07.12.2015, 21:41  [ТС]
структура этой части базы в приложенной картинке (там все поля которые участвуют в запросе)
Миниатюры
Соединить данные из двух запросов по ключу  
0
1267 / 980 / 385
Регистрация: 02.09.2012
Сообщений: 3,027
08.12.2015, 13:15
Все равно не понимаю, что вы хотите выбрать.
Вот запрос, который для всех "что производим" подсчитывает сколько будет во всех партиях и сколько уже готово.

SQL
1
2
3
SELECT ol.key, SUM(ol.qty), SUM(op.qtyplan), SUM(op.qtyfact)
FROM ordlist ol LEFT OUTER JOIN ordprod op ON ol.key=op.listkey
GROUP BY ol.key;
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.12.2015, 13:15
Помогаю со студенческими работами здесь

Как в sql (informix) сравнить полученные с двух запросов данные?
есть два запроса: IfxCommand cmd = new IfxCommand(&quot;select date_doc,division from os_act_enter where os_card_id=20667&quot;,ifxConnection1); ...

Сгруппировать по ключу результаты нескольких однотипных SQL-запросов
Добрый день! Имею 3 однотипных запроса и хочу, грубо говоря, объединить их в один единый запрос. SELECT BY ID_m, prm1, prm2, prm3...

Объединить подмассивы двух массивов по ключу
Имеется 2 массива: array(2) { =&gt; array(4) { =&gt; int(1488) =&gt; string(55)...

Объединение значений двух Dictionary по ключу
Добрый день! Есть два Dictionary&lt;string, List&lt;string&gt;&gt;: Dictionary&lt;string, List&lt;string&gt;&gt; first; Dictionary&lt;string,...

Вывести данные, отсортированные по заданному ключу
Ребят помогите переделать прогу сортировки Задание: Работа обязательно с файлами. В файле содержатся данные о сотрудниках...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru