如何将不同表中的数据转换为单表

时间:2016-10-15 07:55:14

标签: sql asp.net sql-server join

我正在开展一个项目,我需要像facebook一样展示一些更新(第一个号码的最新更新,或者你可以用LIFO方式说)。我从不同的表中获取记录...我有3种用户查询:第一种是用户的公司项目,第二种是公司订单查询,第三种是供应商对公司订单查询的回复。

我的SQL代码是:

--user's Company Projects Table Query

 SELECT * FROM COMPANY_PROJECTS WHERE REF_COMPANYID=1003

-- Companies Order Queries Table Query

SELECT * FROM QUERYRECORDFROMUSER QR
  LEFT JOIN COMPANY_MASTER CM ON CM.COMPANY_ID = QR.QUERYFROM
  WHERE   cm.COMPANY_ID = 1003
  order by P_QUERYID desc

--Vendor's replies to company Order queriesTable Query 
  select  QUOTE_ID,NAME,P_QUERYID,ENQUIRYTITLE,REMARKS from QUOTE_FOR_ENQUIRY qe
  left join QUERYRECORDFROMUSER qr
  on qr.P_QUERYID = qe.REF_QUERYID
  left join VENDOR_REGISTRATION vr 
  on vr.VENDOR_REGID = qe.REF_VENDORID
  where REF_COMPANYID=1003

按QUOTE_ID desc enter image description here订购

我有来自3个查询的数据,但我无法根据创建日期对其进行排序。 因为我在前端的三个转发器中绑定它,它将显示表1,然后是表2,然后是表3记录,但我想按照创建的日期显示,无论记录是否来自表1,2或3。 / p>

感谢Adavnce !!

1 个答案:

答案 0 :(得分:2)

如果您的表看起来相同(即相同的数据类型等),您可以使用UNION。然而,事实并非如此,这使得它更加棘手。一种解决方案是在缺少的列中添加NULL值。因此,如果您有以下具有相应列的表:

表A:a,b,c

表B:a',b,d,e

表C:a'',b,f,g,h

其中a,a'和a''是您的ID,它们是整数,b是您的创建日期,您可以执行以下操作:

SELECT a, b, c, NULL, NULL, NULL, NULL, NULL FROM A
UNION  a', b, NULL, d, e, NULL, NULL, NULL FROM B
UNION  a'', b, NULL, NULL, NULL, f, g, h FROM C
ORDER BY b DESC