Oracle EBS警报机制(Oracle EBS Alert Mechanism)
我对Oracle EBS和Oracle Alert机制一无所知。 我的理解是Oracle Alert就像数据库触发器一样工作。
从后端发生数据库更新/插入时,Oracle Alert是否会触发? 我们观察到警报只针对事务前端而不是针对后端更新运行?
是否保证就像触发器一样,EBS警报会在记录的每次更新时触发?
I have no knowledge on Oracle EBS and Oracle Alert mechanism. My understanding is that Oracle Alert works just like database trigger.
Will Oracle Alert fire when database updates/inserts happen from the back-end? We have observed alert is only firing for transactions front end and not running for back-end updates?
Is it guaranteed that just like a Trigger, EBS Alert will fire on every update to the record?
原文:https://stackoverflow.com/questions/41501198
最满意答案
简单的方法是使用变量:
SELECT `id`, `workout_id`, `weight`, `date`, @rn := IF( @workout_id = `workout_id`, @rn + 1, IF(@workout_id := `workout_id`, 1, 1) ) as rn FROM workout_tracking CROSS JOIN (SELECT @rn := 0, @workout_id := -1) as var ORDER BY `workout_id`, `date` DESC, `id` DESC
因为您首先为
workout_id
订购,您可以找到最新的date
和最新的id
,在这种情况下,这些将具有@rn = 1
现在你的最终查询应该是
SELECT w.*, filter.* FROM workout w JOIN (SELECT `id`, `workout_id`, `weight`, `date`, @rn := IF( @workout_id = `workout_id`, @rn + 1, IF(@workout_id := `workout_id`, 1, 1) ) as rn FROM workout_tracking CROSS JOIN (SELECT @rn := 0, @workout_id := -1) as var ORDER BY `workout_id`, `date` DESC, `id` DESC ) as filter ON w.id = filter.`workout_id` WHERE filter.rn = 1;
对于
LEFT JOIN
尝试:LEFT JOIN ( ... ) as filter ON w.id = filter.`workout_id` AND filter.rn = 1
不需要那里的条件。
The easy way is using variables:
SELECT `id`, `workout_id`, `weight`, `date`, @rn := IF( @workout_id = `workout_id`, @rn + 1, IF(@workout_id := `workout_id`, 1, 1) ) as rn FROM workout_tracking CROSS JOIN (SELECT @rn := 0, @workout_id := -1) as var ORDER BY `workout_id`, `date` DESC, `id` DESC
Because you order first for
workout_id
you can find the latestdate
and latestid
, in this case those will have@rn = 1
Now your final query should be
SELECT w.*, filter.* FROM workout w JOIN (SELECT `id`, `workout_id`, `weight`, `date`, @rn := IF( @workout_id = `workout_id`, @rn + 1, IF(@workout_id := `workout_id`, 1, 1) ) as rn FROM workout_tracking CROSS JOIN (SELECT @rn := 0, @workout_id := -1) as var ORDER BY `workout_id`, `date` DESC, `id` DESC ) as filter ON w.id = filter.`workout_id` WHERE filter.rn = 1;
For
LEFT JOIN
try:LEFT JOIN ( ... ) as filter ON w.id = filter.`workout_id` AND filter.rn = 1
dont need the where condition.
相关问答
更多-
首先,您的表结构包含varchar(30)的所有“Idn”。 看起来那些实际上是其他表的ID键,应该是整数,以便更好地索引和加入性能。 其次,这种类型的过程,尤其是基于Web的过程,是通过将这些列直接作为记录直接存储在记录上来完成对喜欢,不喜欢和收藏的值进行DENORMALIZING的完美示例(例如:新闻表)。 当一个人喜欢,不喜欢或作为最爱时,立即盖章并完成它。 如果第一次通过你做批量sql-update这样做,但也有表上的触发器自动处理适当更新计数。 这样,您只需直接查询表并按所需顺序查询,并且不需要查 ...
-
SQL Server:连接表导致数据在每一行上复制(SQL Server : join tables causes the data to duplicate on every row)[2022-01-18]
我认为最后一个表应该使用ProductId加入,而不仅仅是OrderID : LEFT JOIN dbo.supplierOrderReceiveDetail ON (dbo.supplierOrderReceiveDetail.supplierOrderReceiveID=dbo.supplierOrderReceive.ID) AND (dbo.supplierOrderReceiveDetail.ProductID =dbo.sdbo.supplierOrderDetails.Prod ... -
也许是这样的: ;WITH CTE AS ( SELECT ROW_NUMBER() OVER(PARTITION BY tblB.[No] ORDER BY tblB.[Date]) AS RowNbr, tblB.* FROM B AS tblB ) SELECT * FROM A AS tblA LEFT JOIN CTE ON tblA.No=CTE.No AND CTE.RowN ...
-
SQl左连接表(SQl Left Join with tables)[2022-03-22]
SELECT t.Type, count(d.Type), sum(d.cost) FROM Types t LEFT JOIN Details d ON t.Type=d.Type group by t.Type,d.Type SELECT t.Type, count(d.Type), sum(d.cost) FROM Types t LEFT JOIN Details d ON t.Type=d.Type group by t.Type,d.Type -
SQL查询左连接表(SQL Query Left Join Tables)[2022-06-26]
将LEFT JOIN更改为FULL OUTER JOIN,调整WHERE子句并让我们知道它是如何进行的。 SELECT record.student_name, coalesce(record.student_id, attendance.student_number), record.student_finger, record.student_section, record.activity_type, record.activity_title, ... -
像这样的东西.. SELECT * FROM ( SELECT row_number() OVER (), * FROM tbl1 -- ORDER BY id (or whatever you're ordering by) ) AS t1 INNER JOIN ( SELECT row_number() OVER (), * FROM tbl2 -- ORDER BY id (or whatever you're ordering by) ) AS t2 USING (row ...
-
从左连接获取一行(Getting one row from left join)[2022-01-30]
以下查询将完成工作: select o.name, (select name from geo where id = min(og.geo_id)) as geo_country, (select name from geo where id = max(og.geo_id)) as geo_city from objects o inner join objectsgeo og on og.object_id = o.id inner join geo g on g.id ... -
查询中很少有错误,使用[Order]的语法在mysql中无效,然后您需要内部查询的别名。 OrderItem也需要先与Order一起加入。 此外,不需要使用用于子查询的联接,因为您没有执行任何聚合部分来从Item获取数据。 在MySQL中,查询如下所示。 SELECT h.Name, i.Type, oi.Quantity FROM Hospital h LEFT JOIN `Order` o ON o.HospitalID = h.HospitalID INNER JOIN OrderItem ...
-
抱歉耽搁了。 我创建了表并在localhost上运行语句。 教育表: 截图 个人资料表: 截图 在SQL语句下运行后的结果: 截图 SELECT profile.friend_id, birthyear, checkins, MAX( CASE WHEN school_type = 'High School' THEN 1 WHEN school_type = 'College' THEN 2 WHEN school_type = 'Graduate School' THEN 3 ELSE 0 ...
-
简单的方法是使用变量: SQL DEMO SELECT `id`, `workout_id`, `weight`, `date`, @rn := IF( @workout_id = `workout_id`, @rn + 1, IF(@workout_id := `workout_id`, 1, 1) ) as rn FROM workout_tracking CROSS JOIN ...