0

SQL で 2 つのテーブルをリンクしようとしていますが、意図したとおりに動作しません。ID、名前、住所、都市、州の 5 つのみを抽出したい 20 個のフィールドを含む id、Total およびその他の Table2 の 2 つのフィールドを持つ table1 があります。私が持っているクエリは次のとおりです。

SELECT Table1.id, Table2.name, Table2.address, Table2.city, Table2.province, Table1.Total
  FROM Table1 INNER JOIN Table2 ON
 WHERE Table2.id Table1.Total Table1.id => = "& CLng (number1.Text ) &
  "AND Table1.Total <=" & CLng (number2.Text) &
"ORDER BY ASC Table2.name"

意図は 2 つのテーブルを関連付けることですが、問題は結果のクエリで結果が繰り返されることです。その理由は、たとえば、同じ id で名前が異なるデータがいくつかあり、同じ id にもかかわらず、異なるデータを異なる行に配置しようとするためだと思います。

解決策を探すのに多くの時間を費やしましたが、見つかりません。

4

4 に答える 4

1

ON句が正しく指定されていません。WHERE完全な結合を行うのではなく、実際に結合を関連する行に制限するように、単語を削除してみてください。

于 2013-02-22T19:12:49.333 に答える
0

これを試して

SELECT Table1.id, Table2.name, Table2.address, Table2.city, Table2.province, Table1.Total
FROM Table1 INNER JOIN Table2 ON
Table2.id = Table1.id  WHERE Table1.Total >=  CLng(number1.Text) AND Table1.Total <= CLng(number2.Text)  
GROUP BY Table2.name 
ORDER BY ASC Table2.name"
于 2013-02-22T19:22:03.030 に答える
0

「DISTINCT」ステートメントを使用して、個別の (異なる) 値のみを返すことができます。重複行は 1 回だけ返されます。

SQL クエリの構文が間違っています。そのため、重複した行が返される可能性があります。ただし、修正後も重複する行が返される場合、Table2 には同じ ID を持つ複数の行が必要です。その場合、DISTINCT ステートメントを使用できます。

正しい SQL クエリは次のとおりです。

SELECT DISTINCT Table1.id, Table2.name, Table2.address, Table2.city, Table2.province, Table1.Total
FROM Table1 INNER JOIN Table2 ON  Table1.id = Table2.id 
     AND Table1.total BETWEEN minValue AND maxValue 
ORDER BY ASC Table2.name

(minValue と maxValue は数値です)

VB 構文で

" SELECT Table1.id, Table2.name, Table2.address, Table2.city, Table2.province, Table1.Total " _
" FROM Table1 INNER JOIN Table2 ON  Table1.id = Table2.id " & _
"      AND Table1.total BETWEEN " & CLng (number1.Text ) &  "AND " & CLng (number2.Text) & _ 
"ORDER BY ASC Table2.name "
于 2013-02-27T00:53:48.413 に答える