Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запрос для MySQL, Запрос для MySQL 
:(
    Опции темы
mexanoid
Дата 15.12.2015, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 15.12.2015

Репутация: нет
Всего: нет



Уважаемые форумчане, помогите разобраться с запросом.
Имеются данные: 
user posted image

Код для создании базы:
Скрытый текст

-- MySQL Workbench Forward Engineering
 
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
 
-- -----------------------------------------------------
-- Schema IDZ
-- -----------------------------------------------------
 
-- -----------------------------------------------------
-- Schema IDZ
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `IDZ` DEFAULT CHARACTER SET cp1251 ;
USE `IDZ` ;
 
-- -----------------------------------------------------
-- Table `IDZ`.`product`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `IDZ`.`product` (
  `idproduct` INT NOT NULL AUTO_INCREMENT,
  `productname` VARCHAR(45) NOT NULL,
  `city` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`idproduct`))
ENGINE = InnoDB;
 
 
-- -----------------------------------------------------
-- Table `IDZ`.`detail`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `IDZ`.`detail` (
  `iddetail` INT NOT NULL AUTO_INCREMENT,
  `detailname` VARCHAR(45) NOT NULL,
  `weight` INT NOT NULL,
  `color` VARCHAR(45) NOT NULL,
  `city` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`iddetail`))
ENGINE = InnoDB;
 
 
-- -----------------------------------------------------
-- Table `IDZ`.`provider`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `IDZ`.`provider` (
  `idprovider` INT NOT NULL AUTO_INCREMENT,
  `providername` VARCHAR(45) NOT NULL,
  `status` INT NOT NULL,
  `city` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`idprovider`))
ENGINE = InnoDB;
 
 
-- -----------------------------------------------------
-- Table `IDZ`.`supple`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `IDZ`.`supple` (
  `idsupple` INT NOT NULL AUTO_INCREMENT,
  `provider_idprovider` INT NOT NULL,
  `product_idproduct` INT NOT NULL,
  `detail_iddetail` INT NOT NULL,
  `quantity` INT NOT NULL,
  PRIMARY KEY (`idsupple`),
  CONSTRAINT `fk_supple_provider`
    FOREIGN KEY (`provider_idprovider`)
    REFERENCES `IDZ`.`provider` (`idprovider`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_supple_product1`
    FOREIGN KEY (`product_idproduct`)
    REFERENCES `IDZ`.`product` (`idproduct`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_supple_detail1`
    FOREIGN KEY (`detail_iddetail`)
    REFERENCES `IDZ`.`detail` (`iddetail`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;
 
 
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
 
-- -----------------------------------------------------
-- Data for table `IDZ`.`product`
-- -----------------------------------------------------
START TRANSACTION;
USE `IDZ`;
INSERT INTO `IDZ`.`product` (`idproduct`, `productname`, `city`) VALUES (DEFAULT, 'Жесткий диск', 'Париж');
INSERT INTO `IDZ`.`product` (`idproduct`, `productname`, `city`) VALUES (DEFAULT, 'Перфаратор', 'Рим');
INSERT INTO `IDZ`.`product` (`idproduct`, `productname`, `city`) VALUES (DEFAULT, 'Считыватель', 'Афины');
INSERT INTO `IDZ`.`product` (`idproduct`, `productname`, `city`) VALUES (DEFAULT, 'Принтер', 'Афины');
INSERT INTO `IDZ`.`product` (`idproduct`, `productname`, `city`) VALUES (DEFAULT, 'Флоппи-диск', 'Лондон');
INSERT INTO `IDZ`.`product` (`idproduct`, `productname`, `city`) VALUES (DEFAULT, 'Терминал', 'Осло');
INSERT INTO `IDZ`.`product` (`idproduct`, `productname`, `city`) VALUES (DEFAULT, 'Лента', 'Лондон');
 
COMMIT;
 
 
-- -----------------------------------------------------
-- Data for table `IDZ`.`detail`
-- -----------------------------------------------------
START TRANSACTION;
USE `IDZ`;
INSERT INTO `IDZ`.`detail` (`iddetail`, `detailname`, `weight`, `color`, `city`) VALUES (DEFAULT, 'Гайка', 12, 'Красный', 'Лондон');
INSERT INTO `IDZ`.`detail` (`iddetail`, `detailname`, `weight`, `color`, `city`) VALUES (DEFAULT, 'Болт', 17, 'Зеленый', 'Париж');
INSERT INTO `IDZ`.`detail` (`iddetail`, `detailname`, `weight`, `color`, `city`) VALUES (DEFAULT, 'Винт', 17, 'Голубой', 'Рим');
INSERT INTO `IDZ`.`detail` (`iddetail`, `detailname`, `weight`, `color`, `city`) VALUES (DEFAULT, 'Винт', 14, 'Красный', 'Лондон');
INSERT INTO `IDZ`.`detail` (`iddetail`, `detailname`, `weight`, `color`, `city`) VALUES (DEFAULT, 'Кулачок', 12, 'Голубой', 'Париж');
INSERT INTO `IDZ`.`detail` (`iddetail`, `detailname`, `weight`, `color`, `city`) VALUES (DEFAULT, 'Блюм', 19, 'Красный', 'Лондон');
 
COMMIT;
 
 
-- -----------------------------------------------------
-- Data for table `IDZ`.`provider`
-- -----------------------------------------------------
START TRANSACTION;
USE `IDZ`;
INSERT INTO `IDZ`.`provider` (`idprovider`, `providername`, `status`, `city`) VALUES (DEFAULT, 'Смит', 20, 'Лондон');
INSERT INTO `IDZ`.`provider` (`idprovider`, `providername`, `status`, `city`) VALUES (DEFAULT, 'Джонс', 10, 'Париж');
INSERT INTO `IDZ`.`provider` (`idprovider`, `providername`, `status`, `city`) VALUES (DEFAULT, 'Блейк', 30, 'Париж');
INSERT INTO `IDZ`.`provider` (`idprovider`, `providername`, `status`, `city`) VALUES (DEFAULT, 'Кларк', 20, 'Лондон');
INSERT INTO `IDZ`.`provider` (`idprovider`, `providername`, `status`, `city`) VALUES (DEFAULT, 'Адамс', 30, 'Афины');
 
COMMIT;
 
 
-- -----------------------------------------------------
-- Data for table `IDZ`.`supple`
-- -----------------------------------------------------
START TRANSACTION;
USE `IDZ`;
INSERT INTO `IDZ`.`supple` (`idsupple`, `provider_idprovider`, `product_idproduct`, `detail_iddetail`, `quantity`) VALUES (1, 1, 1, 1, 200);
INSERT INTO `IDZ`.`supple` (`idsupple`, `provider_idprovider`, `product_idproduct`, `detail_iddetail`, `quantity`) VALUES (2, 1, 4, 1, 700);
INSERT INTO `IDZ`.`supple` (`idsupple`, `provider_idprovider`, `product_idproduct`, `detail_iddetail`, `quantity`) VALUES (3, 2, 1, 3, 400);
INSERT INTO `IDZ`.`supple` (`idsupple`, `provider_idprovider`, `product_idproduct`, `detail_iddetail`, `quantity`) VALUES (4, 2, 2, 3, 200);
INSERT INTO `IDZ`.`supple` (`idsupple`, `provider_idprovider`, `product_idproduct`, `detail_iddetail`, `quantity`) VALUES (NULL, 2, 3, 3, 200);
INSERT INTO `IDZ`.`supple` (`idsupple`, `provider_idprovider`, `product_idproduct`, `detail_iddetail`, `quantity`) VALUES (NULL, 2, 4, 3, 500);
INSERT INTO `IDZ`.`supple` (`idsupple`, `provider_idprovider`, `product_idproduct`, `detail_iddetail`, `quantity`) VALUES (NULL, 2, 5, 3, 600);
INSERT INTO `IDZ`.`supple` (`idsupple`, `provider_idprovider`, `product_idproduct`, `detail_iddetail`, `quantity`) VALUES (NULL, 2, 6, 3, 400);
INSERT INTO `IDZ`.`supple` (`idsupple`, `provider_idprovider`, `product_idproduct`, `detail_iddetail`, `quantity`) VALUES (NULL, 2, 7, 3, 800);
INSERT INTO `IDZ`.`supple` (`idsupple`, `provider_idprovider`, `product_idproduct`, `detail_iddetail`, `quantity`) VALUES (NULL, 2, 2, 5, 100);
INSERT INTO `IDZ`.`supple` (`idsupple`, `provider_idprovider`, `product_idproduct`, `detail_iddetail`, `quantity`) VALUES (NULL, 3, 1, 3, 200);
INSERT INTO `IDZ`.`supple` (`idsupple`, `provider_idprovider`, `product_idproduct`, `detail_iddetail`, `quantity`) VALUES (NULL, 3, 2, 4, 500);
INSERT INTO `IDZ`.`supple` (`idsupple`, `provider_idprovider`, `product_idproduct`, `detail_iddetail`, `quantity`) VALUES (NULL, 4, 3, 6, 300);
INSERT INTO `IDZ`.`supple` (`idsupple`, `provider_idprovider`, `product_idproduct`, `detail_iddetail`, `quantity`) VALUES (NULL, 4, 7, 6, 300);
INSERT INTO `IDZ`.`supple` (`idsupple`, `provider_idprovider`, `product_idproduct`, `detail_iddetail`, `quantity`) VALUES (NULL, 5, 2, 2, 200);
INSERT INTO `IDZ`.`supple` (`idsupple`, `provider_idprovider`, `product_idproduct`, `detail_iddetail`, `quantity`) VALUES (NULL, 5, 4, 2, 100);
INSERT INTO `IDZ`.`supple` (`idsupple`, `provider_idprovider`, `product_idproduct`, `detail_iddetail`, `quantity`) VALUES (NULL, 5, 5, 5, 500);
INSERT INTO `IDZ`.`supple` (`idsupple`, `provider_idprovider`, `product_idproduct`, `detail_iddetail`, `quantity`) VALUES (NULL, 5, 7, 5, 100);
INSERT INTO `IDZ`.`supple` (`idsupple`, `provider_idprovider`, `product_idproduct`, `detail_iddetail`, `quantity`) VALUES (NULL, 5, 2, 6, 200);
INSERT INTO `IDZ`.`supple` (`idsupple`, `provider_idprovider`, `product_idproduct`, `detail_iddetail`, `quantity`) VALUES (NULL, 5, 4, 1, 100);
INSERT INTO `IDZ`.`supple` (`idsupple`, `provider_idprovider`, `product_idproduct`, `detail_iddetail`, `quantity`) VALUES (NULL, 5, 4, 3, 200);
INSERT INTO `IDZ`.`supple` (`idsupple`, `provider_idprovider`, `product_idproduct`, `detail_iddetail`, `quantity`) VALUES (NULL, 5, 4, 4, 800);
INSERT INTO `IDZ`.`supple` (`idsupple`, `provider_idprovider`, `product_idproduct`, `detail_iddetail`, `quantity`) VALUES (NULL, 5, 4, 5, 400);
INSERT INTO `IDZ`.`supple` (`idsupple`, `provider_idprovider`, `product_idproduct`, `detail_iddetail`, `quantity`) VALUES (NULL, 5, 4, 6, 500);
 
COMMIT;



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

Если посмотреть по изображению , то ... либо я неправильно понимаю задание, либо при составлении запроса не будет выдано не одного изделия так как нет не одного изделия для которого поставляют детали все поставщики.
PM MAIL   Вверх
Akina
Дата 15.12.2015, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 453



Ну делай по шагам.
В подзапросе получи список красных деталей.
По нему в другом подзапросе получи поставщиков, поставляющих эти детали.
Затем сделай выборку изделий, среди поставщиков деталей к которым нет поставщиков, не входящих в полученный список.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
ksnk
Дата 15.12.2015, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: нет
Всего: 386



Обычно, такие заумные формулировки возникают в процессе перевода.
 
Задачу можно понять и так: Выберем всех поставщиков, которые поставляют красные детали.
Выберем все изделия, которые можно собрать из поставок этих поставщиков. Красные детали в готовом изделии не обязательны  smile 

2 Akina: Извиняюсь, опоздал :(

Это сообщение отредактировал(а) ksnk - 15.12.2015, 12:32


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
mexanoid
Дата 15.12.2015, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 15.12.2015

Репутация: нет
Всего: нет



Не могу сформулировать, ребят вот прям второй день голову грею. Что от меня надо? запрос любой напишу, хоть с процедурами хоть как, не могу понять ТЗ, могли бы вы мне по картинки сказать что вот строчка такаята например там строчка 19 одходит под такой запрос или строчка 15, 19, 23 (из главной таблицы) подходит под запрос

Это сообщение отредактировал(а) mexanoid - 15.12.2015, 12:45
PM MAIL   Вверх
ksnk
Дата 15.12.2015, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: нет
Всего: 386



Ну вот 
изделие `Жесткий диск`(J1) производится из деталей P1 и P3. P1 и так красная, а вот P3 поставляется поставщиками S2,S3 и S5.

 S3 поставляет красные винты... Так что `Жесткий диск` можно собрать из деталей поставщиков, которые поставляют красные детали.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
mexanoid
Дата 15.12.2015, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 15.12.2015

Репутация: нет
Всего: нет



Уважаемый кот, спасибо тебе,но ты скажи мне прям строчка номер 8 или стррочка номер 9  smile  smile  smile и я сразу пойму)) 
PM MAIL   Вверх
ksnk
Дата 15.12.2015, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: нет
Всего: 386



Цитата(mexanoid @  15.12.2015,  11:31 Найти цитируемый пост)
Задача звучит так:
Выдать номера изделий

Изделие `Жесткий диск`(J1)  подходит под условие.

Возможно, есть еще изделия, подходящие под условия.

Цитата(mexanoid @  15.12.2015,  16:45 Найти цитируемый пост)
скажи мне прям строчка номер 8 или стррочка номер 9

А номеров строчек на картинке нету  smile 


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
mexanoid
Дата 16.12.2015, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 15.12.2015

Репутация: нет
Всего: нет



Кот, смотрите, я вас правильо понял? Берем все что с красными из таблицы поставок:

1    Жесткий диск    Гайка    Красный
4    Принтер            Гайка    Красный
2    Перфаратор    Винт            Красный
3    Считыватель    Блюм    Красный
7    Лента            Блюм    Красный
2    Перфаратор    Блюм    Красный
4    Принтер            Гайка    Красный
4    Принтер            Винт    Красный
4    Принтер            Блюм    Красный

Теперь смотрим изделия из этой выборки: 

1    Жесткий диск
2    Перфаратор
3    Считыватель
4    Принтер
7    Лента

Усе чтоли?)) это все что надо?)))
PM MAIL   Вверх
ksnk
Дата 16.12.2015, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: нет
Всего: 386



Нет. 
По шагам
1. выбираем все красные детали - (1,4,6)

2. выбираем всех поставщиков, которые поставляют красные детали (красные поставщики)- (1,3,4,5)

3. выбираем все детали от красных поставщиков - (1,2,3,4,5,6)

4. выбираем изделие, которое нельзя собрать только из этих деталей. Точнее  - найти изделие с деталью не из этого списка.

Вообще говоря, на третьем шаге получаем весь(все 6) список деталей и, соответственно, все изделия можно собрать из деталей красных поставщиков.

Можно сделать вид, что так и задумано, типа мы составили запросы на каждый из 4 шагов - это (запросы) и является решением. А странный результат, полученный нами, не имеет практического значения...

Можно поискать более адекватную трактовку условия задачи.
  




--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Akina
Дата 16.12.2015, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 453



На самом деле задача недоопределена. Непонятно, нужны изделия, которые МОЖНО собрать из деталей ТОЛЬКО от красных поставщиков, или нужны изделия, которые НЕЛЬЗЯ собрать без деталей НЕ от красных поставщиков. Это радикально разные задачи.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.1797 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.