mysqlテーブルで同じ2つのフィールドを取得する方法を見つけようとしています。私が持っているのは、同じデータベースに2つのテーブルがあります。私が現在持っているものは次のとおりです。 -
単一検索が正常に機能する
SELECT * FROM `table1` WHERE `acked` != 1 AND `host_status` = 'HOSTDOWN'
返された結果は良好で予想されます。
同じ項目を検索するために2つのテーブルをマージしようとしましたが、エラーは発生しませんが、同時に「AND」を使用しているため、理解できる結果は返されません。
SELECT `table1`.*, `table2`.*
FROM table1, table2
WHERE (`table1`.`acked` != '1' AND `table1`.`host_status` = 'HOSTDOWN')
AND (`table2`.`acked` != '1' AND `table2`.`host_status` = 'HOSTDOWN')
ただし、次の「OR」を使用すると結果が表示されますが、期待される結果が表示されず、確認された値1と0も取得されますが、HOSTUPを使用してホストステータスを取得します。
SELECT `table1`.*, `table2`.*
FROM table1, table2
WHERE (`table1`.`acked` != '1' AND `table1`.`host_status` = 'HOSTDOWN')
OR (`table2`.`acked` != '1' AND `table2`.`host_status` = 'HOSTDOWN')
どのような指示がありますか?
答え1
以下を使って答えを見つけましたUNION
。
SELECT * FROM `table1` WHERE `acked` != 1 AND `host_status` = 'HOSTDOWN' UNION
SELECT * FROM `table2` WHERE `acked` != 1 AND `host_status` = 'HOSTDOWN'