【问题标题】:Cannot get data from two tables using join无法使用连接从两个表中获取数据
【发布时间】:2026-01-27 00:55:02
【问题描述】:

第一个表:产品

id | Name | Price | Discount
-------------------------------
1    xyz     200
2    xyz     250
3    yz      100     50

第二桌:买

id  | userid  |  Product_id  Card_details  
------------------------------------------
1       1           1          55555   
2       1           2          88888      
3       3           1          77777    

现在我的 php 变量中有 $user_id。如果用户 ID 为 3,我想要以下输出:

id   Name   Price   Discount     user_id    Product_id   Card_details

3     yz     100      50            3           1           77777

我怎样才能做到这一点。

【问题讨论】:

  • 我们任何人都可以在眨眼间给你这个答案,但这不是 SO 的用途。我们帮助您纠正错误。告诉我们你做错了什么。

标签: php mysql sql sql-server


【解决方案1】:

使用JOINwhere

 SELECT * FROM Product p JOIN buy b 
 ON p.id = b.Product_id 
 WHERE b.userid ='3'

【讨论】:

  • 不应该是SELECT * FROM Product AS p JOIN buy AS b ON p.id = b.product_id WHERE b.userid = '3'?
  • @lino 在大多数 DBMS 中,使用AS 指定列别名,不指定表别名。我敢肯定这是有原因的。
  • @DarwinvonCorax 好的,不知道 :)
【解决方案2】:

SELECT * FROM Product JOIN buy ON Product.id = buy.id WHERE buy.userid = $user_id;

【讨论】:

  • 如果我只想从购买表中选择列或没有列,那么我需要在哪里进行更改。
  • SELECT 中指定您需要的任何列,例如SELECT Product.id, buy.userid, buy.Product_id, ....
【解决方案3】:

试试下面的查询

$query = "SELECT Product.id, Product.Name, Product.Price, Product.Discount,
buy.userid , buy.Product_id, buy.Card_details
FROM Product
JOIN buy ON Product.id = buy.Product_id
WHERE buy.userid = 3";

【讨论】:

    【解决方案4】:

    首先在您的产品表 xyz 中,您必须为您的产品使用唯一名称以便更好地理解。

    现在产品表中的 id 是您的产品 id。检查您的购买表 productid 没有产品 id 3 的条目。当您想为用户 id 3 购买产品 3 时,购买表 productid 条目应该是用户 ID 3 的 3。

    现在检查下面的查询,它肯定对你有用。

    SELECT * FROM Product 
    INNER JOIN buy ON Product.id = buy.Product_id
    WHERE buy.userid = '3';
    

    表示你想通过用户 ID 3 购买产品。

    【讨论】:

      【解决方案5】:

      试试这个

      DECLARE @USER_ID INT=3 --I/P of USER_ID
      SELECT P.ID,
             P.NAME,
             P.PRICE,
             P.Discount,
             B.user_id,
             B.PRODUCT_ID,
             B.CARD_DETAILS
      FROM   #PRODUCT P
             JOIN #BUY B
               ON P.ID = B.ID
      WHERE  B.USER_ID = @USER_ID
      

      【讨论】: