Возвращает пустой результат запроса - MySQL

Узнай цену своей работы

Формулировка задачи:

создаю и заполняю таблицы:
create table customers (
  id_customer int NOT NULL AUTO_INCREMENT,
  name char(50) NOT NULL,
  email char(50) NOT NULL,
  PRIMARY KEY (id_customer)
);
 
create table vendors (
  id_vendor int NOT NULL AUTO_INCREMENT,
  name char(50) NOT NULL,
  city char(30) NOT NULL,
  address char(100) NOT NULL,
  PRIMARY KEY (id_vendor)
);
 
create table sale (
  id_sale int NOT NULL AUTO_INCREMENT,
  id_customer int NOT NULL,
  date_sale date NOT NULL,
  PRIMARY KEY (id_sale),
  FOREIGN KEY (id_customer) REFERENCES customers (id_customer)
);
 
create table incoming (
  id_incoming int NOT NULL AUTO_INCREMENT,
  id_vendor int NOT NULL,
  date_incoming date NOT NULL,
  PRIMARY KEY (id_incoming),
  FOREIGN KEY (id_vendor) REFERENCES vendors (id_vendor)
);
 
create table products (
  id_product int NOT NULL AUTO_INCREMENT,
  name char(100) NOT NULL,
  author  char(50) NOT NULL,
  PRIMARY KEY (id_product)
);
 
create table prices (
  id_product int NOT NULL,
  date_price_changes date NOT NULL,
  price double NOT NULL,
  PRIMARY KEY (id_product, date_price_changes),
  FOREIGN KEY (id_product) REFERENCES products (id_product)
);
 
create table magazine_sales (
  id_sale int NOT NULL,
  id_product int NOT NULL,
  quantity int NOT NULL,
  PRIMARY KEY (id_sale, id_product),
  FOREIGN KEY (id_sale) REFERENCES sale (id_sale),
  FOREIGN KEY (id_product) REFERENCES products (id_product)
);
 
create table magazine_incoming (
  id_incoming int NOT NULL,
  id_product int NOT NULL,
  quantity int NOT NULL,
  PRIMARY KEY (id_incoming, id_product),
  FOREIGN KEY (id_incoming) REFERENCES incoming (id_incoming),
  FOREIGN KEY (id_product) REFERENCES products (id_product)
);
INSERT INTO vendors  (name, city, address) VALUES
 ('Вильямс', 'Москва', 'ул.Лесная, д.43'),
 ('Дом печати', 'Минск', 'пр.Ф.Скорины, д.18'),
 ('БХВ-Петербург', 'Санкт-Петербург', 'ул.Есенина, д.5');
 
INSERT INTO customers  (name, email) VALUES
 ('Иванов Сергей', 'removed@mail.ru'),
 ('Ленская Катя', 'removed@mail.ru'),
 ('Демидов Олег', 'removed@mail.ru'),
 ('Афанасьев Виктор', 'removed@mail.ru'),
 ('Пажская Вера', 'removed@mail.ru');
 
INSERT INTO products  (name, author) VALUES
 ('Стихи о любви', 'Андрей Вознесенский'),
 ('Собрание сочинений, том 2', 'Андрей Вознесенский'),
 ('Собрание сочинений, том 3', 'Андрей Вознесенский'),
 ('Русская поэзия', 'Николай Заболоцкий'),
 ('Машенька', 'Владимир Набоков'),
 ('Доктор Живаго', 'Борис Пастернак'),
 ('Наши', 'Сергей Довлатов'),
 ('Приглашение на казнь', 'Владимир Набоков'),
 ('Лолита', 'Владимир Набоков'),
 ('Темные аллеи', 'Иван Бунин'),
 ('Дар', 'Владимир Набоков'),
 ('Сын вождя', 'Юлия Вознесенская'),
 ('Эмигранты', 'Алексей Толстой'),
 ('Горе от ума', 'Александр Грибоедов'),
 ('Анна Каренина', 'Лев Толстой'),
 ('Повести и рассказы', 'Николай Лесков'),
 ('Антоновские яблоки', 'Иван Бунин'),
 ('Мертвые души', 'Николай Гоголь'),
 ('Три сестры', 'Антон Чехов'),
 ('Беглянка', 'Владимир Даль'),
 ('Идиот', 'Федор Достоевский'),
 ('Братья Карамазовы', 'Федор Достоевский'),
 ('Ревизор', 'Николай Гоголь'),
 ('Гранатовый браслет', 'Александр Куприн');
 
INSERT INTO incoming  (id_vendor, date_incoming) VALUES
 ('1', '2011-04-10'),
 ('2', '2011-04-11'),
 ('3', '2011-04-12');
 
INSERT INTO magazine_incoming  (id_incoming, id_product, quantity) VALUES
 ('1', '1', '10'),
 ('1', '2', '5'),
 ('1', '3', '7'),
 ('1', '4', '10'),
 ('1', '5', '10'),
 ('1', '6', '8'),
 ('1', '18', '8'),
 ('1', '19', '8'),
 ('1', '20', '8'),
 ('2', '7', '10'),
 ('2', '8', '10'),
 ('2', '9', '6'),
 ('2', '10', '10'),
 ('2', '11', '10'),
 ('2', '21', '10'),
 ('2', '22', '10'),
 ('2', '23', '10'),
 ('2', '24', '10'),
 ('3', '12', '10'),
 ('3', '13', '10'),
 ('3', '14', '10'),
 ('3', '15', '10'),
 ('3', '16', '10'),
 ('3', '17', '10');
 
INSERT INTO prices  (id_product, date_price_changes, price) VALUES
 ('1', '2011-04-10', '100'),
 ('2', '2011-04-10', '130'),
 ('3', '2011-04-10', '90'),
 ('4', '2011-04-10', '100'),
 ('5', '2011-04-10', '110'),
 ('6', '2011-04-10', '85'),
 ('7', '2011-04-11', '95'),
 ('8', '2011-04-11', '100'),
 ('9', '2011-04-11', '79'),
 ('10', '2011-04-11', '49'),
 ('11', '2011-04-11', '105'),
 ('12', '2011-04-12', '85'),
 ('13', '2011-04-12', '135'),
 ('14', '2011-04-12', '100'),
 ('15', '2011-04-12', '90'),
 ('16', '2011-04-12', '75'),
 ('17', '2011-04-12', '90'),
 ('18', '2011-04-10', '150'),
 ('19', '2011-04-10', '140'),
 ('20', '2011-04-10', '85'),
 ('21', '2011-04-11', '105'),
 ('22', '2011-04-11', '70'),
 ('23', '2011-04-11', '65'),
 ('24', '2011-04-11', '130');
 
INSERT INTO sale  (id_customer, date_sale) VALUES
 ('2', '2011-04-11'),
 ('3', '2011-04-11'),
 ('5', '2011-04-11');
 
INSERT INTO magazine_sales  (id_sale, id_product, quantity) VALUES
 ('1', '1', '1'),
 ('1', '5', '1'),
 ('1', '7', '1'),
 ('2', '2', '1'),
 ('3', '1', '1'),
 ('3', '7', '1');
Когда выполняю запрос:
SELECT mag_incoming.id_product, mag_incoming.quantity
     FROM mag_incoming, products;
отрабатывает нормально - 25 строк. когда делаю:
SELECT mag_incoming.id_product, mag_incoming.quantity
     FROM mag_incoming, products
     WHERE mag_incoming.id_product = products.author;
то возвращает пустой запрос, ноль строк. Что здесь неправильно?

Решение задачи: «Возвращает пустой результат запроса»

textual
Листинг программы
SELECT products.name, mag_incoming.quantity
FROM mag_incoming, products
WHERE mag_incoming.id_product=products.id_product;

Объяснение кода листинга программы

  1. SELECT - оператор выбора данных из базы данных
  2. products.name - название переменной, которая будет содержать значения имен продуктов
  3. mag_incoming.quantity - название переменной, которая будет содержать значения количества продуктов
  4. FROM - оператор, указывающий таблицы, из которых нужно выбрать данные
  5. mag_incoming - название таблицы, из которой нужно выбрать данные
  6. products - название таблицы, из которой нужно выбрать данные
  7. WHERE - оператор, указывающий условия выборки данных
  8. mag_incoming.id_product=products.id_product - условие, что нужно выбрать только те строки, где значение id_product в таблице mag_incoming равно значению id_product в таблице products
  9. ; - символ окончания оператора WHERE
  10. ; - символ окончания оператора FROM
  11. ; - символ окончания оператора SELECT
  12. ; - символ окончания оператора FROM
  13. ; - символ окончания оператора WHERE
  14. ; - символ окончания оператора FROM
  15. ; - символ окончания оператора SELECT
  16. ; - символ окончания оператора FROM
  17. ; - символ окончания оператора WHERE
  18. ; - символ окончания оператора FROM
  19. ; - символ окончания оператора SELECT
  20. ; - символ окончания оператора FROM

Оцени полезность:

6   голосов , оценка 3.5 из 5