Я хочу сделать конкретный c запрос к группе, указав c информацию о 2 таблицах - PullRequest
0 голосов
/ 21 марта 2020

Итак, у меня есть 2 таблицы, которые выглядят следующим образом:

Factory
| name | timeoperating | operatedpieces |

Pieces
| serial | piecetype | unit (foreign key referencing factory.name) |

"Единица" в "Частях" - это внешний ключ, который ссылается на "Имя" в "Фабрике". Я хочу сделать запрос, в котором есть «имя», «временное управление», «управляемые части», а затем еще 9 столбцов с указанием количества элементов каждого типа (от P1 до P9), к которым подключен этот «модуль» или «имя». Разумеется, по одному имени на строку.

Я пробовал много разных вещей, но мне никогда не удавалось запросить что-либо, похожее на то, что я хочу, возможно ли это?

Вывод (1-й ряд):

| factory.name | factory.timeoperating | factory.operatedpieces |
  count(pieces.piecetype) where piecetype=P1 and unit=factory.name | 
  (then other 8 columns like the last one 
   but with piecetype = Px where X is the column number)

Ах, я боюсь, я не прояснил себя достаточно ...

1 Ответ

1 голос
/ 21 марта 2020

Вы можете получить эти данные, используя 9 «скалярных подзапросов».

Например:

select 
 f.name,
 f.timeoperating,
 f.operatedpieces,
 (select count(*) from pieces p where p.unit = f.name and p.piecetype = 1) as c1,
 (select count(*) from pieces p where p.unit = f.name and p.piecetype = 2) as c2,
 (select count(*) from pieces p where p.unit = f.name and p.piecetype = 3) as c3,
 (select count(*) from pieces p where p.unit = f.name and p.piecetype = 4) as c4,
 (select count(*) from pieces p where p.unit = f.name and p.piecetype = 5) as c5,
 (select count(*) from pieces p where p.unit = f.name and p.piecetype = 6) as c6,
 (select count(*) from pieces p where p.unit = f.name and p.piecetype = 7) as c7,
 (select count(*) from pieces p where p.unit = f.name and p.piecetype = 8) as c8,
 (select count(*) from pieces p where p.unit = f.name and p.piecetype = 9) as c9
from factory f
...