![](/img/trans.png)
[英]how to select all from one table and one only from another linked with foreign key
[英]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.