MySQL Объединение четырех таблиц (связанных) в новую таблицу, чтобы я мог экспортировать в CSV - PullRequest
0 голосов
/ 27 апреля 2020

Моя цель - объединить все поля из всех 4 таблиц, чтобы создать новую таблицу со всеми полями, чтобы я мог экспортировать как CSV, готовый для импорта CSV в WordPress / WooCommerce.

Кажется, что основной таблицей являются «Подпродукты» (с 2000 наименованиями), и все они относятся к таблице «Продукты» (20 наименований), которая относится к категориям и брендам. Надеюсь, в этом есть какой-то смысл.

Буду признателен за любое руководство SQL, которым вы сможете поделиться.

Есть 4 таблицы;

CREATE TABLE Products (
    ProductID int NOT NULL,
    Name varchar(100) NOT NULL,
    Description varchar(5000) NOT NULL,
    CategoryID tinyint NOT NULL,
    BrandID tinyint NOT NULL,
    ChartImage varchar(50) NULL,
    FrontPage bit NULL DEFAULT (0),
    Visibility bit NULL DEFAULT (0),
    Brochure varchar(50) NULL,
    Video varchar(50) NULL,
    SmallImageA varchar(50) NULL,
    MediumImageA varchar(50) NULL,
    LargeImageA varchar(50) NULL,
    SmallImageB varchar(50) NULL,
    MediumImageB varchar(50) NULL,
    LargeImageB varchar(50) NULL,
    SmallImageC varchar(50) NULL,
    MediumImageC varchar(50) NULL,
    LargeImageC varchar(50) NULL,
    SmallImageD varchar(50) NULL,
    MediumImageD varchar(50) NULL,
    LargeImageD varchar(50) NULL,
    SmallImageE varchar(50) NULL,
    MediumImageE varchar(50) NULL,
    LargeImageE varchar(50) NULL,
    LinkA varchar(300) NULL,
    LinkB varchar(300) NULL,
    LinkC varchar(300) NULL,
    LinkD varchar(300) NULL,
    LinkE varchar(300) NULL,
    ProductAssociationA int NULL,
    ProductAssociationB int NULL,
    ProductAssociationC int NULL
);

SubProducts, 
CREATE TABLE SubProducts (
    SubProductID int NOT NULL,
    Code varchar(50) NOT NULL,
    Name varchar(300) NOT NULL,
    ProductID int NOT NULL,
    OnPromotion bit NOT NULL,
    Visibility bit NOT NULL,
    RetailerPrice varchar(20) NOT NULL,
    RetailerPromotionPrice varchar(20) NULL,
    PharmacyPrice varchar(20) NULL,
    PharmacyPromotionPrice varchar(20) NULL,
    GovernmentPrice varchar(20) NULL,
    GovernmentPromotionPrice varchar(20) NULL
);

Categories, 
CREATE TABLE Categories (
    CategoryID tinyint NOT NULL,
    CategoryName varchar(50) NOT NULL,
    SortColumn tinyint NULL
);

Brands,
CREATE TABLE Brands (
    BrandID tinyint NOT NULL,
    BrandName varchar(50) NOT NULL,
    SortColumn tinyint NULL
);

Спасибо.

1 Ответ

0 голосов
/ 27 апреля 2020

Самый простой способ выбросить вещи - присоединиться к очевидным ключам:

SELECT Products.*, SubProducts.*, Categories.*, Brands.* FROM Products LEFT JOIN SubProducts ON ( Products.ProductID = SubProducts.ProductID ) LEFT JOIN Categories ON ( Categories.CategoryID = Products.CategoryID ) LEFT JOIN Brands ON ( Brands.BrandID = Products.BrandID ) /* This part of the query will give you a CSV file: */ INTO OUTFILE '/var/lib/mysql-files/myfilename.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...