Mysql 联合查询

Mysql 联合查询,mysql,sql,Mysql,Sql,请给我5张桌子: 化妆品产品SIDP、产品名称、idc 国内产品SIDDP,描述,参考,idc usersidu,u_name commandsidc,用户ID,日期 marketidm、用户ID、marketname、位置 我想显示所有记录: u_name|date |marketname|location|productname|description|reference ali |12-06-2012|Aldi |DE | | TABL

请给我5张桌子:

化妆品产品SIDP、产品名称、idc 国内产品SIDDP,描述,参考,idc usersidu,u_name commandsidc,用户ID,日期 marketidm、用户ID、marketname、位置 我想显示所有记录:

u_name|date      |marketname|location|productname|description|reference
ali   |12-06-2012|Aldi      |DE      |           | TABLE     |65416
sab   |12-06-2013|Aldi      |DE      | makeup    |           | 
sir   |12-06-2010|MG        |FR      |           | chairs    |416
我们能和工会合作吗?但我认为,对于联合,我们应该在表中使用相同的属性,使用相同的数字,或者在我的情况下,例如,cosmeticproducts表包含的属性比domesticproducts少

我需要你的帮助。我们怎样才能做到这一点?
提前感谢:

您可以使用select中的NULL来合并具有不同/缺少列的表

例如:

SELECT a.Column1 AS 'Col1',
       a.Column2 AS 'Col2',
       null AS 'Col3',
       a.Column4 AS 'Col4'
FROM TableA AS a
UNION ALL
SELECT b.Column1 AS 'Col1',
       b.Column2 AS 'Col2',
       b.Column3 AS 'Col3',
       null  AS 'Col4'
FROM TableB AS b
我不知道这是否有助于解决您的具体问题,但应该有助于您解决工会问题。

我们可以用工会解决这个问题吗?不

这是工会或工会都无法实现的。 您希望来自不同表的数据对齐成单行。工会不是这样做的

假设我们有以下信息:

users
(idu, u_name)
  1     ali

commands
(idc,#userid,date)
  X      1    12-06-2012
因此,我们创建以下查询:

      select u_name , cast(null as date) dt
      from users
UNION ALL -- union would produce the exact same result
      select null, date
      from commands
这是您将得到的结果:

U_NAME DT
ali    NULL
NULL   12-06-2012
两排

如果您使用联接的方式可能会更接近,则此查询:

SELECT u_name , c.date
FROM users u
INNER JOIN commands c ON u.idu = c.#userid
将产生这样的结果:

U_NAME DATE
ali    12-06-2012
U_NAME DATE        MARKETNAME  LOCATION
ali    12-06-2012  ALDI         DE
ali    12-06-2012  MG           FR
但与其他表相比,它要复杂得多,因为不清楚在所有情况下如何进行联接,而且还因为有些表可能有多行用于联接,而且突然间得到的行比预期的多

现在假设我们也有这些数据:

market
(idm, #userid, marketname, location)
  Y1      1       ALDI         DE
  Y2      1       MG           FR
因此,我们使用联接将其包含到查询中:

SELECT u_name , c.date, m.marketname, m.location
FROM users u
INNER JOIN commands c ON u.idu = c.#userid
INNER JOIN market m ON u.idu = m.#userid
现在我们得到这个结果:

U_NAME DATE
ali    12-06-2012
U_NAME DATE        MARKETNAME  LOCATION
ali    12-06-2012  ALDI         DE
ali    12-06-2012  MG           FR

如果不提供每个表中的一些示例数据以及与您提供的数据相关的预期结果,您的需求就无法完全满足。

在所述的表中,您没有所有需要的列,你想展示的,你能展示你所有的表格结构吗?非常感谢这是我搜索的:非常感谢!请注意下面以select u_name开始的示例,castnull as date dt您必须确保列类型也适用于数据。如果您将CASTNULL用作。。。在顶部的查询中。啊,好的,非常感谢您的评论,谢谢您的使用!!它真的帮助了我:再次非常感谢:对不起,你还没有理解我的问题!我知道联合会做什么,我知道联合会和联合会之间的区别!但真的很感谢你的帮助和时间:那为什么要问是否可以和工会一起做;如果你已经知道工会是干什么的?认真地说,重新思考你的问题,准备好样本数据和预期结果。通过我的问题,我想知道我们如何在我的案例中准确地使用它。具体的问题是我们能用union做到这一点吗?这=所示的表格&该问题的答案是否。原因是使用union不会对齐任何行。但无论如何,我真的希望你好运。