16 個のテーブルを持つデータベースがありますが、これに関連するのは 4 つだけです。データベースは、さまざまなサーバー、サーバー情報 (CPU、RAM、IP アドレスなど)、および実行中のソフトウェアを追跡します。ソフトウェアとマシンは、結合テーブルを介して関連付けられています。
CREATE TABLE machsoftjt (
mid int(4) NOT NULL,
sid int(4) NOT NULL,
slid int(4) NOT NULL,
notes varchar(255) default NULL,
UNIQUE KEY mid (mid,slid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
mid はマシン テーブルからのマシンの ID、sid はソフトウェアの名前とソフトウェアのバージョンを含むソフトウェア テーブルからのソフトウェアの ID、slid はソフトリスト テーブルからのソフトウェアリスト ID (実行されているソフトウェアのみをリストし、使用されるテーブル)ソフトウェアのアップグレードが実行されたときに、同じソフトウェアの 2 つの異なるバージョンを実行している 1 台のマシンのエントリがないようにするための一意の制約)。したがって、Microsoft Word 2010 (sid が 1、スライドが 1) と Adobe Photoshop 5 (sid が 2、スライドが 2) を実行している machine1 (mid が 1) がある場合、テーブルは次のようになります。
mid sid slid
1 1 1
1 2 2
このテーブルから、Microsoft Word と Adobe Photoshop の両方を実行しているすべてのマシンを選択したいと考えています。
SELECT machines.machinename FROM (machines INNER JOIN machsoftjt ON
machines.mid=machsoftjt.mid) INNER JOIN software ON machsoftjt.sid=software.sid
WHERE machsoftjt.slid='1' AND machsoftjt.slid='2'
このクエリを実行しても、何も返されません このクエリを実行しても、何も返されません。そして今、私は困惑しており、他に何も思いつきません。すべての助けをいただければ幸いです。