簡體   English   中英

從一個與外鍵鏈接的表到多個表的SELECT查詢

[英]SELECT query from one table linked with foreign key to multiple tables

我的數據庫由這些表組成

    products(
    id INT(10) AUTO_INCREMENT,
    name VARCHAR(16) NOT NULL, 
    PRIMARY KEY (id)
);

/*      ^
    One |
       To
        | Many
        v
*/
versions(
        id INT(10) AUTO_INCREMENT,
        product_id INT(10)
        name VARCHAR(16) NOT NULL, 
        PRIMARY KEY (id),
        FOREIGN KEY (product_id) REFERENCES products(id)
    );


 /*      ^
        One |
           To
            | Many
            v
    */
    subversions(
                id INT(10) AUTO_INCREMENT,
                version_id INT(10)
                name VARCHAR(16) NOT NULL, 
                PRIMARY KEY (id),
                FOREIGN KEY (version_id) REFERENCES versions(id)
            );
/*      ^
    Many|
       To
        | Many
        v
*/
users(
                id INT(10) AUTO_INCREMENT,
                name VARCHAR(16) NOT NULL, 
                password VARCHAR(32) NOT NULL,
                PRIMARY KEY (id),
            );

然后我有

subversions_users_conjuction(
                    id INT(10) AUTO_INCREMENT,
                    subversion_id VARCHAR(16) NOT NULL, 
                    user_id VARCHAR(32) NOT NULL,
                    PRIMARY KEY (id),
                    FOREIGN KEY (subversion_id) REFERENCES subversions(id),
                    FOREIGN KEY (user_id) REFERENCES users(id)

);

我正在努力的是根據當前用戶獲取product.name(和id ..或提交的文件)的查詢。 因此,如果我有一個id = 1的用戶,我需要搜索表subversions_users來獲取所有匹配的子版本,然后從中找到所有匹配的版本,然后是所有匹配的產品,以及所有沒有重復的商品,因此請區分。 我真的不知道從哪里開始

可能是這樣的事情?

SELECT DISTINCT p.name
FROM products AS p
    INNER JOIN versions AS v ON p.id = v.product_id
    INNER JOIN subversions AS s ON v.id = s.version_id
    INNER JOIN subversions_users_conjuction AS c ON s.id = c.subversion_id
WHERE c.user_id = <<<ID>>>;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM