Показать сообщение отдельно
  #1  
Старый 10.07.2013, 19:13
Redddd Redddd вне форума
Прохожий
 
Регистрация: 18.02.2013
Сообщения: 40
Репутация: 10
По умолчанию Связать данные из трех таблиц. Три таблицы, не могу написать выборку

Есть три таблицы. БД - MySQL

Вот их описание:

Код:
CREATE TABLE IF NOT EXISTS marshruti(
idMarsh INT(11) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,
NazvMarsh VARCHAR(128) NOT NULL,
OpisMarsh VARCHAR(255) DEFAULT NULL,
CenaMarsh DECIMAL(2, 0) UNSIGNED DEFAULT NULL,
  PRIMARY KEY (idMarsh),
  UNIQUE INDEX UK_marshruti (NazvMarsh (5), OpisMarsh (6))
)

CREATE TABLE IF NOT EXISTS zakazi(
  `date` DATE NOT NULL,
nomZak INT(11) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,
idKlient INT(11) UNSIGNED NOT NULL,
idMarsh INT(11) UNSIGNED NOT NULL,
kolPut INT(11) UNSIGNED NOT NULL,
  PRIMARY KEY (nomZak),
  CONSTRAINT FK_zakazi_klienti_idKlient FOREIGN KEY (idKlient)
  REFERENCES klienti (idKlient) ON DELETE RESTRICT ON UPDATE RESTRICT,
  CONSTRAINT FK_zakazi_marshruti_idMarsh FOREIGN KEY (idMarsh)
  REFERENCES marshruti (idMarsh) ON DELETE RESTRICT ON UPDATE RESTRICT
)


CREATE TABLE IF NOT EXISTS otkazi(
  `date` DATE NOT NULL,
id INT(11) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,
nomZak INT(11) UNSIGNED NOT NULL,
kolVozvrPut INT(11) UNSIGNED NOT NULL,
  PRIMARY KEY (id),
  CONSTRAINT FK_otkazi_zakazi_nomZak FOREIGN KEY (nomZak)
  REFERENCES zakazi (nomZak) ON DELETE RESTRICT ON UPDATE RESTRICT
)

Необходимо за один запрос выяснить сколько денег потеряла фирма из-за отказов.
Дожился запрос не могу написать.

Может так:
select sum(m.CenaMarsh)
from marshruti m
join zakazi z on m.idMarsh = z.idMarsh
join otkazi o on o.nomZak = z.nomZak

Просто как-то
Ответить с цитированием