我有一個名爲「dati」的表格,表示從1960年到2012年(所有年份都是連續的)年份的「anni」(主鍵)列,「governi」列表示參考表「governi」和「pil」這一列是我想要用表「governi」中的「presidenti」列中的值來提取的值。 如果我嘗試提取所有年份的最小值/最大值,它可以正常工作。但在這種情況下,我需要在有限的幾年內(例如從1980年到1990年)提取這些值。問題是不會返回任何最大/最小值。 正如您在數據庫模式中所看到的,表「dati」和表「governi」連接在「governo」列和「cod」列之間。Mysql查詢,範圍內的最大值和最小值無法正常工作,我該如何解決它?
這是數據庫結構:
TABLE dati:
anno INT(4),
governo VARCHAR(6),
pil FLOAT(10)
TABLE governi:
cod VARCHAR(6),
presidente varchar (50)
這是SQL:
QUERY1:
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;
QUERY2:
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。 –
考慮提供適當的DDLs和/或和sqlfiddle一起使用期望的結果集 – Strawberry
正確形成的問題包含答案的種子。問題的質量與無法找到答案之間有很強的相關性。 – Mihai