0

MS Access では、次のクエリを使用して、さまざまなテーブルから多くのデータを含む単一の行を選択する必要があります。

select top 1 a.colname,b.colname,c.colname 
from tba a, tbb b, tbc c 
where a.colname = 'efg' or
      b.colname ='efg' or
      c.colname ='efg' 

「efg」が 3 つのテーブルの少なくとも 1 つと一致する場合は完全にデータを取得しますが、それらのいずれとも一致しない場合は、MS Access が待機カーソルでフリーズします。何らかの理由でループしていると推測しました。WindowsのタスクマネージャーのEND TASKでしか止めることができませんでした。

私の質問はどうですか?専門家は、これを回避するためのさまざまな手法を説明または提案できますか?

ありがとうございました。

4

1 に答える 1

0

3 つのテーブルのそれぞれのフィールドが同じフィールドである場合、ユニオンを使用して、返された最初のレコードを選択できます。

select top 1 d.*
FROM (      SELECT a.colname  as colName
            FROM tba a
            WHERE a.colname = 'efg'
        UNION ALL
            SELECT b.colnamee as colName      
            FROM tbb b 
            WHERE B.colName='efg' 
        UNION ALL
            SELECT c.colname as colName      
            FROM tbc c
            WHERE c.colName='efg'
     ) as d

または、それらが3つの異なるフィールドである場合、他の人が示唆しているように、3つのテーブルを結合してサーバーの負荷を軽減できます.

于 2016-11-15T07:18:27.837 に答える