我正在开展一个项目,我需要像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
我有来自3个查询的数据,但我无法根据创建日期对其进行排序。 因为我在前端的三个转发器中绑定它,它将显示表1,然后是表2,然后是表3记录,但我想按照创建的日期显示,无论记录是否来自表1,2或3。 / p>
感谢Adavnce !!
答案 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