Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2010, 09:30   #1
Silver_Foxy
Новичок
Джуниор
 
Аватар для Silver_Foxy
 
Регистрация: 08.06.2010
Сообщений: 1
По умолчанию Составить сводную таблицу. Не могу разобраться с join

Доброго дня, товарищи гуру!
Прошу помощи в срочном деле. Никак не могу составить запрос, а диплом уже завтра сдавать)))

Использую MySQL 5.1.41
Структура необходимого куска БД такова:

Код:
CREATE TABLE names (
  idnames INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  our_id VARCHAR(20) NULL,
  shortname VARCHAR(45) NULL,
  fullname VARCHAR(100) NULL,
  PRIMARY KEY(idnames)
)
TYPE=InnoDB;

CREATE TABLE rabota_po_1 (
  idpo1 INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  users_idusers INTEGER UNSIGNED NOT NULL,
  names_idnames INTEGER UNSIGNED NOT NULL,
  date DATE NULL,
  prihodrashod INTEGER NULL,
  comment_2 VARCHAR(65) NULL,
  PRIMARY KEY(idpo1),
  INDEX rabota_po_1_FKIndex1(names_idnames),
  INDEX rabota_po_1_FKIndex2(users_idusers)
)
TYPE=InnoDB;

CREATE TABLE rabota_po_2 (
  idpo2 INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  users_idusers INTEGER UNSIGNED NOT NULL,
  names_idnames INTEGER UNSIGNED NOT NULL,
  date DATE NULL,
  prihodrashod INTEGER NULL,
  comment_2 VARCHAR(65) NULL,
  PRIMARY KEY(idpo2),
  INDEX rabota_po_2_FKIndex1(names_idnames),
  INDEX rabota_po_2_FKIndex2(users_idusers)
)
TYPE=InnoDB;

CREATE TABLE rabota_po_3 (
  idpo3 INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  users_idusers INTEGER UNSIGNED NOT NULL,
  names_idnames INTEGER UNSIGNED NOT NULL,
  date DATE NULL,
  prihodrashod INTEGER NULL,
  comment_2 VARCHAR(65) NULL,
  PRIMARY KEY(idpo3),
  INDEX rabota_po_3_FKIndex1(names_idnames),
  INDEX rabota_po_3_FKIndex2(users_idusers)
)
TYPE=InnoDB;


CREATE TABLE sklad_po_1 (
  idsklpo1 INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  users_idusers INTEGER UNSIGNED NOT NULL,
  names_idnames INTEGER UNSIGNED NOT NULL,
  date DATE NULL,
  prihodrashod INTEGER NULL,
  comment_2 VARCHAR(65) NULL,
  PRIMARY KEY(idsklpo1),
  INDEX sklad_po_1_FKIndex1(names_idnames),
  INDEX sklad_po_1_FKIndex2(users_idusers)
)
TYPE=InnoDB;

CREATE TABLE sklad_ko_1 (
  idsklko1 INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  users_idusers INTEGER UNSIGNED NOT NULL,
  names_idnames INTEGER UNSIGNED NOT NULL,
  date DATE NULL,
  prihodrashod INTEGER NULL,
  comment_2 VARCHAR(65) NULL,
  PRIMARY KEY(idsklko1),
  INDEX sklad_ko_1_FKIndex1(names_idnames),
  INDEX sklad_ko_1_FKIndex2(users_idusers)
)
TYPE=InnoDB;


CREATE TABLE sklad_ko_2 (
  idsklko2 INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  users_idusers INTEGER UNSIGNED NOT NULL,
  names_idnames INTEGER UNSIGNED NOT NULL,
  date DATE NULL,
  prihodrashod INTEGER NULL,
  comment_2 VARCHAR(65) NULL,
  PRIMARY KEY(idsklko2),
  INDEX sklad_ko_2_FKIndex1(names_idnames),
  INDEX sklad_ko_2_FKIndex2(users_idusers)
)
TYPE=InnoDB;

CREATE TABLE users (
  idusers INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  username VARCHAR(20) NULL,
  fullname VARCHAR(45) NULL,
  PRIMARY KEY(idusers)
)
TYPE=InnoDB;
В таблице names лежат наименования аппаратуры, которые вообще производятся предприятием.
А остальные таблицы являют складами, куда вносится приход и расход по каждому экземпляру продкуции (приход ставится без знака, расход ставиться "-50"). Как видите, они все одинаковой структуры (не думаю, что на что-то влияет, но всё же).

Задача в чём:
сделать запрос, где будут указаны все типы аппаратуры и наличие на всех складах.

Должно выглядеть так:
names.shortname___________Склад 1___________Склад 2___________Склад 3
Устройство 1 ________________1 ________________0 ________________2
Устройство 2 ________________200 ______________500 ______________900
Устройство 3 ________________0 ________________0 ________________0

Проблема в том, что для того, чтоб посчитать каждую единицу аппратуры, я делаю sum (prihodrashod) потому что необходимо вывести итоговое количество аппаратуры на складе.
И вот что-то никак не получается.
По идее нужно делать через Left Join, т.к. слева должны быть указаны все типы аппаратуры. указанные в таблице Names.

Прошу помощи! Не успеваю разобраться сам!
Silver_Foxy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Наложение фильтров на сводную таблицу с использованием макроса gots Microsoft Office Excel 0 30.03.2010 10:42
Сводную таблицу как можно стелать? zander Microsoft Office Access 1 11.01.2010 19:41
Не могу обновить таблицу MDmitry PHP 4 27.12.2009 12:19
обновить сводную таблицу? Bezdar Microsoft Office Excel 1 10.04.2009 15:45
Помогите пожалуйста составить Таблицу Gennadij2 Microsoft Office Excel 2 28.03.2009 00:29