データベースから値を選択しようとしていますが、別のデータベースで別の値を確認する必要があります。
このコードを作成しましたが、結果が1つしかなく、理由がわかりません。
SELECT `id` FROM `mc_region`
WHERE `is_subregion` = 'false'
AND lastseen < CURDATE() - INTERVAL 20 DAY
AND (SELECT id_region FROM mc_region_flags
WHERE flag <> 'expire'
AND id_region = mc_region.id
)
LIMIT 0, 30
私が間違ったことは何ですか?
@編集
このコードが機能しない理由はわかっていると思います。データベースmc_region_flagsでは、プライマリデータベースのすべてのレコードにフラグがあるわけではありません。
私は次のことをしたいと思います:
1ºサブリージョンではなく、最後に表示されたのが20日を超える最初のデータベースのすべてのレコードを選択します。2º最初のデータベースの
結果に「有効期限」のフラグがあるかどうかを確認します。ある場合は、結果に含まれません。
1つのSQLコードだけでこれを行うことはできませんか?
@ Edit2
シミュレートするこのコードを作成しましたが、機能しないFULL JOIN
ようですWHERE
SELECT *
FROM mc_region AS r RIGHT OUTER JOIN
mc_region_flags AS f ON r.id = f.id_region
UNION ALL
SELECT * from
mc_region AS r LEFT OUTER JOIN
mc_region_flags AS f
ON r.id = f.id_region
WHERE r.is_subregion = 'false'
AND f.flag = 'exipre'
AND r.lastseen < CURDATE() - INTERVAL 20 DAY
動作しない問題
f.flag
「有効期限」ではありませんf.lastseen
20日を超えていない