我有三个表 user、product 和 userproduct。
User 具有用户个人资料信息,product 具有主键,userproduct 有两个标题,即 UserId 和 ProductId,我用它们来匹配哪个用户拥有哪个产品。
userproduct 按以下方式设置:
----------------------------------
| UserId (int) | ProductId (int) |
----------------------------------
| 1 | 1 |
----------------------------------
| 1 | 2 |
----------------------------------
我的PHP代码如下:
$userId = 1;
$stmt = $pdo->prepare('SELECT * FROM product join userproduct on product.ProductId = userproduct.UserId where UserId = ?');
$stmt->execute([$userId]);
$products = $stmt->fetchAll();
foreach ($products as $productsOwned)
{
echo $productsOwned['ProductName'];
}
我假设这会回显Product1,Product2。但是,它会回显Product1,Product1。
我已经检查了我的数据库几次,一切似乎都按顺序进行,但由于我仍在学习 SQL,我认为我在那里犯了一个错误。任何指导将不胜感激。
最佳答案
你的SQL是错误的,如果你想加入这个表并获取所有用户产品,你可以这样做:
SELECT userproduct.UserId as userId, product.name as productName
FROM userproduct
JOIN product ON userproduct.ProductId = product.ProductId
WHERE userproduct.UserID = {$userId};
关于php - SQL 连接返回重复结果,而不是数据库中反射(reflect)的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42045769/