商业世界1256987月刊2009年10 -10-28
商业世界1256987月刊10 2009-09-23
商业世界1256987月刊2009年-08-18
Linux 4 u 456734月刊25 2009-12-24
Linux 4 u 456734月刊25 2009-11
Linux 4 u 456734月刊25 2009-10-28
我通过查询得到这个结果:
SELECT DISTINCT ljm.journelname,ljm. subscription_id,
ljm.frequency,ljm.publisher, ljm.price, ljd.receipt_date
FROM lib_journals_master ljm,
lib_subscriptionhistory
lsh,lib_journal_details ljd
WHERE ljd.journal_id=ljm.id
ORDER BY ljm.publisher我需要的是每本日记的最新日期?
我尝试了这个查询:
SELECT DISTINCT ljm.journelname, ljm.subscription_id,
ljm.frequency, ljm.publisher, ljm.price,ljd.receipt_date
FROM lib_journals_master ljm,
lib_subscriptionhistory lsh,
lib_journal_details ljd
WHERE ljd.journal_id=ljm.id
AND ljd.receipt_date = (
SELECT max(ljd.receipt_date)
from lib_journal_details ljd)但它给了我整个专栏的最大值。我需要的结果将有两个日期(每个杂志的最大日期),但这个查询只给我一个?
发布于 2009-10-28 11:53:25
您应该使用组,如果您需要最大的日期。应该是这样的:
SELECT
ljm.journelname
, ljm.subscription_id
, ljm.frequency
, ljm.publisher
, ljm.price
, **MAX(ljd.receipt_date)**
FROM
lib_journals_master ljm
, lib_subscriptionhistory lsh
, lib_journal_details ljd
WHERE
ljd.journal_id=ljm.id
GROUP BY
ljm.journelname
, ljm.subscription_id
, ljm.frequency
, ljm.publisher
, ljm.price发布于 2009-10-28 11:55:26
您可以更改WHERE语句以查找每本日记的最后日期:
AND ljd.receipt_date = (
SELECT max(subljd.receipt_date)
from lib_journal_details subljd
where subljd.journelname = ljd.journelname)确保子查询中的表与主查询中的表有不同的别名。
发布于 2009-10-28 12:04:55
像这样的东西应该对你有用。
SELECT ljm.journelname
, ljm.subscription_id
, ljm.frequency
, ljm.publisher
, ljm.price
,md.max_receipt_date
FROM lib_journals_master ljm
, ( SELECT journal_id
, max(receipt_date) as max_receipt_date
FROM lib_journal_details
GROUP BY journal_id) md
WHERE ljm.id = md.journal_id
/请注意,我已经从from子句中删除了这些表,该子句对查询没有任何贡献。如果yopu为了我们的利益简化了您的场景,您可能需要替换它们。
https://stackoverflow.com/questions/1636758
复制相似问题