首页 > 解决方案 > MySQL 将四个表(相关)组合成一个新表,以便我可以导出到 CSV

问题描述

我的目标是结合所有 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
);

非常感谢你。

标签: mysql

解决方案


转储东西的最简单方法是加入明显的键:

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';


推荐阅读