gpt4 book ai didi

php - 连接 2 个表后未得到所需结果

转载 作者:行者123 更新时间:2023-11-29 22:02:32 25 4
gpt4 key购买 nike

我有一个 View ,我需要根据特定用户的 main_menuid 从菜单表中获取所有菜肴的列表,但在这里我需要设置一些条件目前我在整个过程中使用 3 个表(最后给出了所有 3 个表的 TableView )

1) main_menu
2) menu
3) cart

1)我需要根据main_menuid获取菜肴列表

所以如果我需要MM1以下的菜肴列表,那么我应该从菜单表中获取的菜肴列表是(main_menuid是main_menu表的id)

id  main_menuid  dish    
1 1 D1
2 1 D2
3 1 D3

我用来获取上述数据的代码是

$sql = "select * from menu where main_menuid = '".$mainmenuid."'";
$result = mysqli_query($con, $sql);
if (mysqli_num_rows($result) > 0)
{
while($row = mysqli_fetch_assoc($result))
{
print_r($row);
}
}

2) 我也会有一个用户 ID,所以现在我需要向特定用户显示上述列表(让用户 ID 为“1”),但如果他已经添加了任何将上述产品提前添加到购物车,那么它的数量也应该从购物车中获取,而对于其余的商品(不是由他添加到购物车但出现在上面的列表中),数量将为空,因此结果 View 应该是这样的(menuid是菜单表的id)

id  main_menuid  menuid  dish    quantity  userid
1 1 1 D1 3 1
2 1 1 D2 2 1
3 1 1 D3 0 1

我为上述结果尝试的代码是(但它没有给我想要的结果)

SELECT  menu.main_menuid, menu.dish, cart.userid, 
cart.quantity
FROM menu
LEFT JOIN cart ON menu.id=cart.menuid
WHERE main_menuid = '".$main_menuid."' and userid = '".$userid."'

下面是上述过程中使用的所有表的示例 View

主菜单

id   mainmenu_name
1 MM1
2 MM2
3 MM3
4 MM4

菜单

id  main_menuid  dish    
1 1 D1
2 1 D2
3 1 D3
4 2 D4
5 3 D5
6 4 D6

购物车

id  userid  menuid  dish  main_menuid  quantity
1 1 1 D1 1 3
2 1 2 D2 1 2
3 2 1 D1 1 3

谁能告诉我如何达到预期的结果(DBMS:mysql)

最佳答案

将 userID 移至连接,因为它消除了左连接生成的空值。

SELECT  menu.main_menuid, menu.menuid, menu.dish, cart.userid, 
cart.quantity
FROM menu
LEFT JOIN cart ON menu.id=cart.menuid
and userid = '".$userid."'
WHERE main_menuid = '".$main_menuid."'

然而,这意味着您想要一些与用户无关的菜肴,因此在某些情况下 userID 将为 NULL。

为什么这有效,但在 where 子句中不起作用?因为过滤器是在连接之前应用的。这允许保留由于左连接而出现的空值。

关于php - 连接 2 个表后未得到所需结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32479687/

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