在sql中组合2个或更多表

时间:2017-02-08 12:59:24

标签: mysql sql database

产品表

products
productid | sellerid | productprice

sameproduct table

sameproduct
productid | sellerid | productprice

卖家表

sellers
sellerid | sellername | selleraddress

卖方是表格产品和同类产品的外键。 我想显示特定产品的卖家详细信息,这些产品可能同时存在于表格产品和同一产品中。

7 个答案:

答案 0 :(得分:3)

这可能会帮助你。

SELECT * 
FROM sellers 
     INNER JOIN sameproduct ON sellers.sellerid = sameproduct.sellerid  
     INNER JOIN products ON sellers.sellerid = products.sellerid

答案 1 :(得分:0)

尝试类似:

select sellers.* from products
inner join sellers on products.sellerid =sellers.sellerid
where productid=@productid
UNION
select sellers.* from sameproduct
inner join sellers on sameproduct.sellerid =sellers.sellerid
where productid=@productid

答案 2 :(得分:0)

你可以联合两个表,之后做一些事情:

SELECT *
  FROM (
        SELECT * FROM products 
        UNION ALL SELECT * FROM sameproduct
       ) AS p
  JOIN sellers AS s ON (s.sellerid = p.sellerid)
 WHERE productid = @productid

答案 3 :(得分:0)

您可以JOIN productssellers表来获取所需的输出,例如:

SELECT s.sellerid, s.sellername, s.selleraddress
FROM sellers JOIN products p ON s.sellerid = p.sellerid
WHERE p.productid = ?

请注意,如果产品有多个卖家,它将返回多行。

答案 4 :(得分:0)

使用MySQL连接三个名为productssameproductsellers的表:

select s.*
from products p 
inner join sameproduct ps on p.sellerid = ps.sellerid
inner join sellers s on ps.sellerid = s.sellerid 
where productid =in_product_id

答案 5 :(得分:0)

我想这就是你需要的?您将卖家表连接到两个表,并仅选择在两个产品表中的一个中找到productid的记录。

declare @productid int
set @productid = 1

select s.*, p.productid, sp.productid
  from sellers s
    left join product p
      on s.sellerid = p.sellerid
    left join sameproduct sp
      on s.sellerid = sp.sellerid
  where p.productid = @productid 
      or sp.productid = @productid

答案 6 :(得分:0)

您想要显示产品的卖家,因此您需要从卖家表中选择(不加入)。如果您愿意,可以在EXISTS子句(或select * from sellers where sellerid in (select sellerid from products where productid = 12345) or sellerid in (select sellerid from sameproduct where productid = 12345); 子句中)获取产品的卖家ID。

select *
from sellers
where sellerid in (select sellerid from products where productid = 12345
                   union all 
                   select sellerid from sameproduct where productid = 12345);

<thead>

尽管如此,制作产品和同一产品可能比较好。