好吧,所以我试图用最后2列在这里:每张票有一个与它关联的日记,可以有多个条目。我试图根据与条目相关的时间戳获取最新的条目,并创建一个查询,显示自上次条目以来经过了多长时间。最后一列也显示了经过时间,但对于特定类型的日记帐分录。 此查询中的条目需要被限制为拥有与2个人中的1个相对应的所有者ID的故障单。在这个例子中,这些人是'aaaa cccc'和'bbbb dddd'。所以,当我运行查询时,它只是挂起。另外,当我删除最后2列时,它仍然挂起,所以我认为它与where语句有关。我在这里亏本,但由于我对sql很陌生,可能有些简单的东西我错过了。oracle sql查询挂起
SELECT t.ticket_id,
cct.issue,
t.status,
t.priority,
a.account_name,
o.identifier,
To_char(t.created, 'MM/dd/yyyy hh:mm:ss') AS "CREATED",
To_char(SYSDATE - (SELECT Max(ti.timestamp)
FROM ticket_journal ti
WHERE ti.ticket_id = t.ticket_id), 'hh:mm:ss') AS "LAST_ENTRY",
To_char(SYSDATE - (SELECT Max(ti.timestamp)
FROM ticket_journal ti
WHERE ti.ticket_id = t.ticket_id
AND (ti.journal_type LIKE 'External'
OR ti.journal_type LIKE 'External/WIP'
)), 'hh:mm:ss') AS "LAST_EXT_ENTRY"
FROM tickets t,
customer_care_tickets cct,
accounts a,
orders o
WHERE t.owner IN (SELECT cont.contact_id
FROM contacts cont
WHERE (cont.first_name LIKE 'aaaa'
OR cont.first_name LIKE 'bbbb')
AND (cont.last_name LIKE 'cccc'
OR cont.last_name LIKE 'dddd'))
我没有看到任何连接条件。你如何将这4张桌子连接在一起? –
看来你正在做4个表格之间的笛卡儿连接。这可能会在你的'TEMP'表空间最终死亡之前将其吹掉。我假设有一些键可以让你把各种表中的数据联系在一起。你需要在'WHERE'子句中指定那些连接标准(或者转移到使用显式连接语法) –
鉴于LIKE比较中没有通配符,你可以使用'='而不是LIKE。或者添加通配符,如'cont.first_name LIKE'%aaaa%'',如果您想查找FIRST_NAME包含字符'aaaa'的行。文档[此处](http://docs.oracle.com/html/A85397_01/operator.htm)。分享并享受。 –