したがって、上記のコメントの一部を明確にするために、ここで問題となるのは、一緒になった値を識別する方法を持たない(または指定していない)ことです。あなたは70と1223を例に挙げましたが、すべての数字のリストを私たちに与えたら、どのようなものが一緒になるのかをどのように特定できるでしょうか?あなたは "化学の専門知識"と言うかもしれませんが、それは化合物の名前を持つ別の列に基づいていますよね?したがって、実際には、その列をクエリで使用する必要があります。しかし、関連する名前をどのようにつなぐかという問題は残されています(例えば、「鉄の総量」と「鉄の鉄」は両方とも「鉄」という言葉を持っているため接続されていますが、「過マンガン酸塩」と「マンガン」はどうですか?要するに、これらの別々の行の間で、要素、イオン、料金などの項目を共通に指定する別の列が必要です。クエリに含める各「グループ」の行を識別する列も必要です(または除外する)。例:次に
+----------+-----------------+---------+---------+
| KEY_ANLT | Compound | Element | Primary |
+----------+-----------------+---------+---------+
| 70 | total iron | Fe | Y |
| 1223 | ferrous iron | Fe | |
| 1224 | ferric iron | Fe | |
| 900 | total manganese | Mn | Y |
| 901 | permanganate | Mn | |
+----------+-----------------+---------+---------+
、単に「プライマリ」の行を表示するクエリを取得するには、それは非常に簡単です:
SELECT * FROM Table1 WHERE Primary='Y';
その[プライマリ]欄がなければ、あなたはどのように決定する必要があるだろう各行を選択します。おそらくKEY_ANLTが最小のものが必要でしょうか?
SELECT Table1.*
FROM
(SELECT Element, min(KEY_ANLT) AS MinKey FROM Table1 GROUP BY Element) AS Subquery
INNER JOIN Table1 ON
Subquery.Element=Table1.Element AND
Subquery.MinKey=Table1.KEY_ANLT
WHERE句は、WHERE句が行単位で動作し、異なる行を相互に比較しないためです。だからあなたのSQLに:単一の行がKEY_ANLT = 1223 AND KEY_ANLT = 70を持っていないため、行の
IIf([Table1].[KEY_ANLT]=1223 And [Table1].[KEY_ANLT]=70,70,1223)
NONEは、70としてこれを評価しません。各行にはKEY_ANLTの値が1つしかありません。したがって、IIF式はすべての行に対して1223と評価され、条件はKEY_ANLT = 1223(化合物B)の行のみを返します。
サンプルSQLを投稿することをお勧めします。 – Fionnuala
またはいくつかのサンプルデータ – marlan
さらに、通常の基準を満たさないテーブルデザインがあるようです。 – Fionnuala