私は単純な問題のように思えます。たぶん私は思っていた/グーグル/それについての周りを探していたので、ちょうど混乱しているかもしれません。外部キーごとに最高のレコードタイプを選択してください
次の表を考えてみましょう。次のselectを実行
log_id (auto increment primary key)
domain_id (foreign key to "domains" table)
type (enum('notice','warning'))
message (varchar)
:
SELECT *
FROM logs
WHERE domain_id = 4
は '予告' と言う、タイプの2つのログを私を与えると型の3 '警告' だろう。
最高のIDがtype
のログだけを選択するにはどうすればよいですか?効果的に最新のログをdomain_id
とtype
としてください。
おかげで...右のそれを得るように見えることはできません。
クリス
編集:今後の参考のため 、あなたが最初のテーブルからすべてのレコードを選択して表示し結合テーブルの最新の記録を(この場合はすべてのドメインおよびその最新のログを選択したい場合は、レコード(利用可能な場合))、単にその周りのドメインのテーブルの上の選択をラップ:
SELECT
domains.*,
logs.*
FROM
domains
LEFT JOIN (
SELECT
l.*
FROM
logs l
INNER JOIN (
SELECT
MAX(log_id) as maxid
FROM
logs
GROUP BY
domain_id
type
) l3 ON l.log_id = l3.maxid
) l2 USING (domain_id)
+私よりも速く入力するための1: – MatBailie
ありがとうエリック、魅力のように動作します。 – Chris