Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在sql中组合2个或多个表_Mysql_Sql_Database - Fatal编程技术网

Mysql 在sql中组合2个或多个表

Mysql 在sql中组合2个或多个表,mysql,sql,database,Mysql,Sql,Database,产品表 products productid | sellerid | productprice sameproduct表 sameproduct productid | sellerid | productprice 卖方表 sellers sellerid | sellername | selleraddress sellerid是tables产品和sameproduct的外键。 我想显示一个特定productid的卖家详细信息,该ID可能出现在表products和sameproduc

产品表

products
productid | sellerid | productprice
sameproduct表

sameproduct
productid | sellerid | productprice
卖方表

sellers
sellerid | sellername | selleraddress
sellerid是tables产品和sameproduct的外键。 我想显示一个特定productid的卖家详细信息,该ID可能出现在表products和sameproduct中。

请尝试以下操作:

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
尝试以下方法:

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

您可以合并这两个表,然后执行以下操作:

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

您可以合并这两个表,然后执行以下操作:

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

您可以
加入
产品
卖家
表格以获得所需的输出,例如:

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

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

您可以
加入
产品
卖家
表以获得所需的输出,例如:

SELECT s.sellerid, s.sellername, s.selleraddress
FROM sellers JOIN products p ON s.sellerid = p.sellerid
WHERE p.productid = ?
请注意,如果一个产品有多个卖家,它将返回多行。

这可能会对您有所帮助

SELECT * 
FROM sellers 
     INNER JOIN sameproduct ON sellers.sellerid = sameproduct.sellerid  
     INNER JOIN products ON sellers.sellerid = products.sellerid
这可能对你有帮助

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

使用MySQL连接三个表,分别是
products
sameproduct
sellers

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

使用MySQL连接三个表,分别是
products
sameproduct
sellers

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

我想这就是你需要的?您将sellers表左键联接到这两个表中,并仅选择在其中一个产品表中找到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

我想这就是你需要的?您将sellers表左键联接到这两个表中,并仅选择在其中一个产品表中找到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
您希望显示产品的卖家,因此可以从卖家表中选择(无连接)。您可以在
in
子句(或
EXISTS
子句(如果您愿意)中获得产品的卖家ID

但是,最好将products和sameproduct制作为一个表。

您希望显示产品的卖家,因此您可以从卖家表中选择(无连接)。您可以在
in
子句(或
EXISTS
子句(如果您愿意)中获得产品的卖家ID


不过,最好将products和sameproduct设为一个表。

首先,如果两个表的结构相同,则应合并。如果要组织不同类型或类别的产品,则可以添加一个类似于category或type的字段,并在此基础上进行筛选。@navederamzan不一定为true。1:1关系是关系模型中删除空值的常用方法。此外,它还可用于提高不同应用程序或不同角色使用的表的性能。如果大多数人只使用4列,但有一个人需要使用40列,那么拆分表将提高大多数人的应用程序性能。这也是一种典型的数据库分段方法。首先,如果两个表的结构相同,则应合并。如果要组织不同类型或类别的产品,则可以添加类似“类别”或“类型”的字段,并在此基础上进行筛选。@NaveedRamzan不一定为true。1:1关系是关系模型中删除空值的常用方法。此外,它还可用于提高不同应用程序或不同角色使用的表的性能。如果大多数人只使用4列,但有一个人需要使用40列,那么拆分表将提高大多数人的应用程序性能。这也是一种典型的数据库分割方法。AlbertoCh和Roman Tkachuk联合提出的解决方案也应该有效!阿尔伯托赫和罗曼·特卡楚克的联盟的解决方案也应该奏效!虽然这个代码片段可以解决这个问题,但它确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满你的代码,这会降低代码和解释的可读性!虽然这个代码片段可以解决这个问题,但它确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满你的代码,这会降低代码和解释的可读性!