gpt4 book ai didi

php - 将多个sql表和多个sql查询合并到一条语句中

转载 作者:行者123 更新时间:2023-11-29 13:57:38 25 4
gpt4 key购买 nike

我研究过使用 join 方法将表连接在一起,但我不仅想连接表,还想将查询连接到一个语句中,但我不知道如何将查询连接到一个语句中。

我有三张 table ,一张称为“ friend ”,一张称为“用户”,一张称为“啤酒”。

用户表:

名称 |编号

好友表:

用户 ID | friend 姓名

啤酒 table :

用户 ID |啤酒

我想找到给定用户的所有 friend ,并查询获取每个用户及其 friend 拥有的独特啤酒的数量。

以前我使用 php 来“构建”要执行的 sql 语句,这会在循环中进行大量 sql 调用,而且很困惑。我知道必须有一种更有效的方法来做到这一点。

最佳答案

工作示例:http://sqlfiddle.com/#!2/f1fdd/9

构建架构:

CREATE TABLE user(
id int(11),
name varchar(50)
);
CREATE TABLE userFriends(
userID int(11),
friendID int(11)
);
CREATE TABLE beer(
beerID int(11),
beerName varchar(50)
);
CREATE TABLE friendBeer(
userID int(11),
beerID int(11)
);
INSERT INTO user(id,name) VALUES(1,'friend 1');
INSERT INTO user(id,name) VALUES(2,'friend 2');
INSERT INTO user(id,name) VALUES(3,'friend 3');
INSERT INTO user(id,name) VALUES(4,'jeremy');

INSERT INTO userFriends(userID,friendID) VALUES(4,1);
INSERT INTO userFriends(userID,friendID) VALUES(4,2);
INSERT INTO userFriends(userID,friendID) VALUES(4,3);

INSERT INTO beer(beerID, beerName) VALUES(1, 'amstel light');
INSERT INTO beer(beerID, beerName) VALUES(2, 'bud light');
INSERT INTO beer(beerID, beerName) VALUES(3, 'miller');

INSERT INTO friendBeer(userID, beerID) VALUES(1, 1);
INSERT INTO friendBeer(userID, beerID) VALUES(2, 2);
INSERT INTO friendBeer(userID, beerID) VALUES(3, 3);
INSERT INTO friendBeer(userID, beerID) VALUES(4, 1);
INSERT INTO friendBeer(userID, beerID) VALUES(1, 3);

以及查询:

SELECT U.id,
U.name,
(SELECT count(beerID)
FROM friendBeer
WHERE userID = 4) AS "user beer count",
U2.name AS 'Friends name',
COUNT(FB2.beerID)
FROM user U
LEFT JOIN userFriends F
ON U.id = F.userID
LEFT JOIN user U2
ON F.friendID = U2.id
LEFT JOIN friendBeer FB2
ON F.friendID = FB2.userID
LEFT JOIN friendBeer FB
ON U.id = FB.userID
WHERE U.id = 4
GROUP BY F.friendID, U.id

我假设您将 =1 更改为 UserID 的任何内容 - 但这向您展示了查询的工作原理。

关于php - 将多个sql表和多个sql查询合并到一条语句中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15594608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com