2017-08-23 18 views
0

私はMysqlを使用していますが、SELECTクエリから結果を取得しようとしています。私は2つのテーブルを持っています。まず、テーブルウェア、第2のテーブルsoftwares_name_cache:2 WHERE句を使用したテーブル結合

desc hardware; 
+----------------+---------------------+------+-----+---------+----------------+ 
| Field   | Type    | Null | Key | Default | Extra   | 
+----------------+---------------------+------+-----+---------+----------------+ 
| ID    | int(11)    | NO | PRI | NULL | auto_increment | 
| DEVICEID  | varchar(255)  | NO | PRI | NULL |    | 
| NAME   | varchar(255)  | YES | MUL | NULL |    | 
| WORKGROUP  | varchar(255)  | YES | MUL | NULL |    | 
| USERDOMAIN  | varchar(255)  | YES |  | NULL |    | 
| OSNAME   | varchar(255)  | YES | MUL | NULL |    | 
| OSVERSION  | varchar(255)  | YES |  | NULL |    | 
| OSCOMMENTS  | varchar(255)  | YES |  | NULL |    | 
| PROCESSORT  | varchar(255)  | YES |  | NULL |    | 
| PROCESSORS  | int(11)    | YES |  | 0  |    | 
| PROCESSORN  | smallint(6)   | YES |  | NULL |    | 
| MEMORY   | int(11)    | YES | MUL | NULL |    | 
| SWAP   | int(11)    | YES |  | NULL |    | 
+----------------+---------------------+------+-----+---------+----------------+ 

desc softwares_name_cache; 
+-------+--------------+------+-----+---------+----------------+ 
| Field | Type   | Null | Key | Default | Extra   | 
+-------+--------------+------+-----+---------+----------------+ 
| ID | int(11)  | NO | PRI | NULL | auto_increment | 
| NAME | varchar(255) | YES | UNI | NULL |    | 
+-------+--------------+------+-----+---------+----------------+ 

私は、テーブルウェアやテーブルsoftwares_name_cacheから(softwares_name_cache where name like '%Microsoft SQL Server 20%')状態から(OSNAME LIKE '%Server%')条件に参加する必要があるので、各SQLサーバのプロセッサ(sum(hardware.PROCESSORN)の数を取得しようとしています。

+0

どちらもあなたの表は名前と呼ばれる列を持っています。 'table_name.Name'(' hardware.Name'または 'softwares_name_cache.Name')を使うか、テーブルにエイリアスを与えてそのエイリアスを使用してください。 –

答えて

0

フィールド「名前」は、ハードウェアとソフトウェアの両方の_キャッシュテーブルに共通です。あなたの所在地では、Nameフィールドでフィルタリングしています。したがって、それはエラーを投げる。このようにしてみてください。

SELECT sum(hardware.PROCESSORN) 
FROM hardware 
inner join softwares_name_cache on hardware.id = softwares_name_cache.ID 
WHERE (OSNAME LIKE '%Server%') AND softwares_name_cache.NAME IN IN (select NAME from 
     softwares_name_cache where name like '%Microsoft SQL Server 20%'); 
+0

同じ結果sum(hardware.PROCESSORN)NULL以外のNULL –

0
SELECT sum(hardware.PROCESSORN) 
FROM hardware 
inner join softwares_name_cache on hardware.ID= softwares_name_cache.ID 
WHERE (OSNAME LIKE '%Server%') 
AND softwares_name_cache.NAME IN 
    (
    select softwares_name_cache.NAME 
    from softwares_name_cache 
    where softwares_name_cache.NAME like '%Microsoft SQL Server 20%' 
    ); 
+0

result sum(hardware.PROCESSORN)trrue以外のNULL –

+0

クエリ自体に問題がありますので、内部結合が最適な解決策ではない可能性があります.. sum(hardware.PROCESSORN).. .. –

+0

はい、エラーは修正されていますか?クエリの背後にあるロジックは、あなた次第ですか、私があなたを助けることができるかどうかを確認するための追加情報を提供します –

関連する問題