4

次のような同様の属性を共有するすべてのレコードを検索するクエリを作成しようとしています。

select * from table_A 
where fullname like in (select firstname from employees where X)

唯一のことは、これは単なる私の擬似コードです。実際には多くのテーブルを並べ替えているため、現在持っている実際のクエリは次のようになります。

select * from devices 
where devicename like in (select X from X1 where T in (select T from T1 where Y in     (select Y from Y1 where Z in (select Z from Z1 where AreaName = '74';

join コマンドを使用しようとしていますが、この状況に適用する方法について非常に混乱しています。

4

5 に答える 5

1

試す:

SELECT d.*
  FROM devices d
 INNER JOIN X1 ON d.devicename like '%'||x1.X||'%'
 INNER JOIN T1 ON x1.T = T1.T
 INNER JOIN Y1 ON T1.Y = Y1.Y
 INNER JOIN Z1 ON Y1.Z = Z1.Z
 WHERE Z1.AreaName = '74'
于 2012-11-20T08:38:21.073 に答える
1

どうぞ ....

SELECT D.* 
from Devices D
    inner join X1 X on D.devicename like X.X 
    inner join  T1 T on T.T = X.T
    inner join Y1 Y on Y.Y = T.Y
    inner join Z1 Z on Y.Z = Z1.Z AND Z.Areaname = '74';
于 2012-11-20T08:56:44.700 に答える
0

「結合」コマンドは、2 つのテーブルの外積を実行し、共通の列名が同じ値を持つタプル/行のみを選択します。

したがって、クエリの場合:

select * from table_A
where fullname like in (select firstname from employees where X)

だろう:

select * from table_A
left join employees
on table_A.fullname = employees.firstname
where X
于 2012-11-20T07:59:42.727 に答える
0

では、Join 構文を使用した 2 番目のクエリを示します (そうしようと思います)。

select * from  Z1 Z1_1 
    JOIN Y1 Y_1 ON Y_1.Z=Z1_1.Z 
    JOIN T1 ON T1.Y=Y_1.Y 
    JOIN X1 X1_2 ON X1_2.T=T1.T 
    JOIN devices  d ON d.devicename=X1_2.X
    where Z1_1.AreaName = '74';
于 2012-11-20T07:55:48.953 に答える
0

これを試して:

SELECT d.*
FROM devices d
INNER JOIN X1 ON d.`like` = x1.X
INNER JOIN T1 ON x1.T = T1.T
INNER JOIN Y1 ON T1.Y = Y1.Y
INNER JOIN Z1 ON Y1.Z = Z1.Z
WHERE Z1.AreaName = '74'
于 2012-11-20T07:56:02.627 に答える