【发布时间】:2013-12-12 14:41:15
【问题描述】:
我有一个名为“dati”的表,其中“anni”列(主键)表示从 1960 年到 2012 年的年份(所有年份都是连续的),“governi”列表示对表“governi”的引用”和“pil”列是我想用“governi”表中“presidenti”列中的值提取的值。 如果我尝试提取所有年份的最小/最大值,它会起作用。但在这种情况下,我需要在有限的年份范围内(例如从 1980 年到 1990 年)提取这些值。问题是它不返回任何最大值/最小值。 表“dati”和表“governi”连接在“governo”列和“cod”列之间,如您在数据库架构中所见。
这是数据库结构:
TABLE dati:
anno INT(4),
governo VARCHAR(6),
pil FLOAT(10)
TABLE governi:
cod VARCHAR(6),
presidente varchar (50)
这是 SQL:
查询1:
SELECT a.presidente, b.anno, b.$dato
FROM governi AS a
INNER JOIN dati AS b ON a.cod=b.governo
WHERE b.$dato =(
SELECT MAX(c.$dato) AS maxpil
FROM dati AS c
) AND b.anno BETWEEN $inizio AND $fine;
查询2:
SELECT a.presidente, b.anno, b.$dato
FROM governi AS a
INNER JOIN dati AS b ON a.cod=b.governo
WHERE b.$dato = (
SELECT MIN(NULLIF(c.$dato,0)) AS valore
FROM dati AS c
) AND b.anno BETWEEN $inizio AND $fine;
我该如何解决这个问题?
【问题讨论】:
-
这与 PHP 无关。这纯粹是一个 SQL 构造问题。我已经去掉了不相关的 PHP 代码,只留下了 sql。
-
考虑提供适当的 DDL 和/或 sqlfiddle 以及所需的结果集
-
正确形成的问题包含答案的种子。问题的质量与无法找到答案之间存在很强的相关性。
-
我认为问题是我对问题的基本解释?...
-
...抱歉我的英语不好。我试图在 sqlfiddle 上上传表格和查询:sqlfiddle.com/#!2/a57ee/1
标签: mysql max inner-join between