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联合提出的解决方案也应该有效!阿尔伯托赫和罗曼·特卡楚克的联盟的解决方案也应该奏效!虽然这个代码片段可以解决这个问题,但它确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满你的代码,这会降低代码和解释的可读性!虽然这个代码片段可以解决这个问题,但它确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满你的代码,这会降低代码和解释的可读性!