Соединить элемент таблицы с другим элементом той же таблицы - MySQL

  1. Здравствуйте! У меня возникла проблема с соединением элементов таблицы по внешнему ключу. зы: использую MySQL Workbench.


textual

Код к задаче: «Соединить элемент таблицы с другим элементом той же таблицы - MySQL»

-- 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 shop
-- -----------------------------------------------------
 
-- -----------------------------------------------------
-- Schema shop
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `shop` DEFAULT CHARACTER SET utf8 ;
USE `shop` ;
 
-- -----------------------------------------------------
-- Table `shop`.`customer`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `shop`.`customer` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `first_name` VARCHAR(45) NULL,
  `last_name` VARCHAR(45) NULL,
  PRIMARY KEY (`id`),
  UNIQUE INDEX `id_UNIQUE` (`id` ASC))
ENGINE = InnoDB;
 
 
-- -----------------------------------------------------
-- Table `shop`.`the_order`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `shop`.`the_order` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `client_id` INT NOT NULL,
  `time` VARCHAR(5) NULL,
  `date` DATE NULL,
  PRIMARY KEY (`id`, `client_id`),
  INDEX `client_id_idx` (`client_id` ASC),
  UNIQUE INDEX `id_UNIQUE` (`id` ASC),
  CONSTRAINT `client_id`
    FOREIGN KEY (`client_id`)
    REFERENCES `shop`.`customer` (`id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB;
 
 
-- -----------------------------------------------------
-- Table `shop`.`category`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `shop`.`category` (
  `id` INT NOT NULL,
  `name` VARCHAR(30) NOT NULL,
  `parent_cat` INT NULL DEFAULT NULL,
  PRIMARY KEY (`id`, `parent_cat`),
  INDEX `subcat_to_cat_idx` (`parent_cat` ASC),
  CONSTRAINT `subcat_to_cat`
    FOREIGN KEY (`parent_cat`)
    REFERENCES `shop`.`category` (`id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB;
 
 
-- -----------------------------------------------------
-- Table `shop`.`product`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `shop`.`product` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(45) NULL,
  `price` INT NULL,
  `weight` FLOAT NULL,
  `cat_id` INT NOT NULL,
  PRIMARY KEY (`id`, `cat_id`),
  INDEX `productCategory_idx` (`cat_id` ASC),
  UNIQUE INDEX `id_UNIQUE` (`id` ASC),
  CONSTRAINT `productCategory`
    FOREIGN KEY (`cat_id`)
    REFERENCES `shop`.`category` (`id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB;
 
 
-- -----------------------------------------------------
-- Table `shop`.`orderProduct`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `shop`.`orderProduct` (
  `order_id` INT NOT NULL,
  `product_id` INT NOT NULL,
  PRIMARY KEY (`order_id`, `product_id`),
  INDEX `product_id_idx` (`product_id` ASC),
  CONSTRAINT `order_id`
    FOREIGN KEY (`order_id`)
    REFERENCES `shop`.`the_order` (`id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT `product_id`
    FOREIGN KEY (`product_id`)
    REFERENCES `shop`.`product` (`id`)
    ON DELETE CASCADE
    ON UPDATE CASCADE)
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 `shop`.`customer`
-- -----------------------------------------------------
START TRANSACTION;
USE `shop`;
INSERT INTO `shop`.`customer` (`id`, `first_name`, `last_name`) VALUES (1, 'Grisha', 'Sydorenko');
INSERT INTO `shop`.`customer` (`id`, `first_name`, `last_name`) VALUES (2, 'Pasha', 'Grigorenko');
INSERT INTO `shop`.`customer` (`id`, `first_name`, `last_name`) VALUES (3, 'Sasha', 'Mukolenko');
INSERT INTO `shop`.`customer` (`id`, `first_name`, `last_name`) VALUES (4, 'Dasha', 'Denisenko');
INSERT INTO `shop`.`customer` (`id`, `first_name`, `last_name`) VALUES (5, 'Masha', 'Maximenko');
 
COMMIT;
 
 
-- -----------------------------------------------------
-- Data for table `shop`.`the_order`
-- -----------------------------------------------------
START TRANSACTION;
USE `shop`;
INSERT INTO `shop`.`the_order` (`id`, `client_id`, `time`, `date`) VALUES (1, 5, '', '28/08/2017');
INSERT INTO `shop`.`the_order` (`id`, `client_id`, `time`, `date`) VALUES (2, 1, '', '27/08/2017');
INSERT INTO `shop`.`the_order` (`id`, `client_id`, `time`, `date`) VALUES (3, 1, '', '26/08/2017');
INSERT INTO `shop`.`the_order` (`id`, `client_id`, `time`, `date`) VALUES (4, 4, '', '25/08/2017');
INSERT INTO `shop`.`the_order` (`id`, `client_id`, `time`, `date`) VALUES (5, 5, '', '24/08/2017');
 
COMMIT;
 
 
-- -----------------------------------------------------
-- Data for table `shop`.`category`
-- -----------------------------------------------------
START TRANSACTION;
USE `shop`;
INSERT INTO `shop`.`category` (`id`, `name`, `parent_cat`) VALUES (1, 'Laptops', NULL);
INSERT INTO `shop`.`category` (`id`, `name`, `parent_cat`) VALUES (2, 'Phones', NULL);
INSERT INTO `shop`.`category` (`id`, `name`, `parent_cat`) VALUES (3, 'Household appliances', NULL);
INSERT INTO `shop`.`category` (`id`, `name`, `parent_cat`) VALUES (4, 'Goods for the home', NULL);
INSERT INTO `shop`.`category` (`id`, `name`, `parent_cat`) VALUES (5, 'Plumbing and repair', NULL);
INSERT INTO `shop`.`category` (`id`, `name`, `parent_cat`) VALUES (6, 'Asus', Laptops);
INSERT INTO `shop`.`category` (`id`, `name`, `parent_cat`) VALUES (7, 'Acer', Laptops);
INSERT INTO `shop`.`category` (`id`, `name`, `parent_cat`) VALUES (8, 'Nokia', Phones);
INSERT INTO `shop`.`category` (`id`, `name`, `parent_cat`) VALUES (9, 'Samsung', Phones);
 
COMMIT;
 
 
-- -----------------------------------------------------
-- Data for table `shop`.`product`
-- -----------------------------------------------------
START TRANSACTION;
USE `shop`;
INSERT INTO `shop`.`product` (`id`, `name`, `price`, `weight`, `cat_id`) VALUES (1, 'product-1', 320, 5.5, 5);
INSERT INTO `shop`.`product` (`id`, `name`, `price`, `weight`, `cat_id`) VALUES (2, 'product-2', 450, 2.8, 4);
INSERT INTO `shop`.`product` (`id`, `name`, `price`, `weight`, `cat_id`) VALUES (3, 'product-3', 1200, 3.3, 3);
INSERT INTO `shop`.`product` (`id`, `name`, `price`, `weight`, `cat_id`) VALUES (4, 'product-4', 280, 10.2, 4);
INSERT INTO `shop`.`product` (`id`, `name`, `price`, `weight`, `cat_id`) VALUES (5, 'product-5', 785, 7.4, 1);
 
COMMIT;
 
 
-- -----------------------------------------------------
-- Data for table `shop`.`orderProduct`
-- -----------------------------------------------------
START TRANSACTION;
USE `shop`;
INSERT INTO `shop`.`orderProduct` (`order_id`, `product_id`) VALUES (1, 2);
INSERT INTO `shop`.`orderProduct` (`order_id`, `product_id`) VALUES (2, 2);
INSERT INTO `shop`.`orderProduct` (`order_id`, `product_id`) VALUES (3, 1);
 
COMMIT;

СДЕЛАЙТЕ РЕПОСТ

7   голосов, оценка 3.714 из 5



Похожие ответы
  1. Есть 3 столбца в таблице : Дата, IP, Сайт Нужно сортировав по дате, найти 2 сайта (например %vk.com% и %google.com%) и выписать количество в 2 разных столбца , при этом не считать одинаковые IP. Пример: ___Date_____VK__Google2016-08-10___3____62016-08-14___2____2 Вот мой код : My

  1. Добрый вечер, столкнулся с проблемой, что не знаю, как вывести на экран элементы из базы данных.PHPHTML1 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
    //просто окошко, где должна появляться информация

     //тут пользователь вводит число Информация по порядковому номеру:
    //кнопка
                                                                                                                       //для примера 2 ячейки из таблицы, ячейки которой                                                                                    //заполнены информацией из БД   В чем заключается проблема: Я создал форму, где пользователь может ввести число. БД представляет из себя краткую таблицу Менделеева со столбцами порядковый номер, вес, формула, номера группы и периода и краткая сводка об элементе. Мне бы создать какое-нибудь окошко, куда по введенному числу (пока один параметр поиска, но можно же и несколько придумать, например вывести элемент из первой группы и первого периода (в идеале такой поиск бы и осуществить, а не только по одному параметру как порядковый номер)) выводилась бы информация. Я просто не знаю, как правильно перейти от введенного пользователем числа к переменной $result=mysql_query(" SELECT * FROM mend WHERE id=' тут как раз число, которое вводит пользователь ' "); , а после и к $row, с которой уже и работать для вывода. Помогите, пожалуйста, создать такое поле, чтобы по введенному числу извлекалась нужная строчка из БД, и эта информация выводилась бы в этом поле

    1. Добрый день . Добрые люди помогите пожалуйста. я хочу с помощью элементами выбора , взять информацию из база данных и показать ее на экран . Вот у меня такой элемент выбора :HTML51 2 3 4 5 6 7 8 9

      Media

      У меня есть база данных и в нее есть таблица "Студенты" что мне делать чтобы после выбора например после выбора первого варианта из элементами выбора , покозали все студенты у которых балл >7. Я знаю что селект выглядит вот так : PHP1 SELECT *FROM Student WHERE Media>7но как сделать чтоб работал для каждого елемента выбора. Спасибо большое за ранееДобавлено через 14 минут 500 руб на вебманы тому кто даст ответ

    1. Здравствуйте, специалисты! Есть запрос к таблице водителей некоторой фырмы:

    1. Согласен, странно сформулировал, в общем есть 2 таблицы, m_zakaz и mc_process. --------------m_zakaz --------------CODE NAME COMPLETE -------------- --------------mc_process --------------CODE ZAKAZ_CODE NAME COMPLETE -------------- Связаны так: m_zakaz.CODE = mc_process.ZAKAZ_CODE Мне нужно вывести все записи из m_zakaz , где m_zakaz.COMPLETE = '0' и (вот тут непонятки) где все процессы для данного заказа имеют mc_process.COMPLETE = '1' Что-то вроде

    1. Здравствуйте. У меня есть массив с большим кол-вом элементов. Необходимо сделать запрос в базу данных, где при выборке из таблицы исключались строки одно из поле которых является элементов этого массива. Не хочется перечислять все эти элементы. Может есть функция MySQL?

    1. в БД необходимо поменять поле у элементов, чье имя начинается с org_ составил такой запрос, однако он не работает:

    1. Добрый день! Ломаю голову над такой задачей. есть таблица test, структура у неё следующая. id -> 1, field_id -> 1, value -> Вася id -> 1, field_id -> 2, value -> 18 лет id -> 1, field_id -> 3, value -> Одесса id -> 2, field_id -> 1, value -> Петя id -> 2, field_id -> 2, value -> 19 лет id -> 2, field_id -> 3, value -> Москва И т.д. Где 1 - Имя, 2 - Возраст, 3 - Город Можно как-то эту таблицу соединять при выборке так, чтобы получалось: id -> 1, 1 -> Вася, 2-> 18 лет, 3 -> Одесса id -> 2, 1 -> Петя, 2-> 19 лет, 3 -> Москва Или может есть другое решение? Изначально задача такая, что при вышеуказанной структуре таблицы мне необходимы выбрать к примеру все записи у которых город Одесса и при этом с ними же выбрать остальные данные связанные с ними по ID. Помогите плиз, а то вообще не могу понять как это сделать средствами MySQL. Или может это лучше выбрать всё, а потом в PHP отфильтровать?

    1. Застрял на задаче, не могу никак реализовать. В таблице есть поле user ну и id 1. user1 2. user2 3. user2 4. user3 5. user1 Нужно запрос что бы делал так: 3.user2 5.user1