Öncelikle, bu noboody aslında soru, cevap veriyor gibi geliyor bana:
Ne sorgu veya sorguları bakmak böyle bir yapıyı üretmek istiyoruz?
bir istenen yapı ile
Konu, LastModified, # Cevaplar.
Bu yapıda bir sonuç tablo üretmek için SQL, sağlanan tablo yapıları verilmiştir, olacaktır:
SELECT t.Id, t.Name AS Topic,
MAX(r.Date) AS LastModified,
COUNT(*) AS NumReplies
FROM Forum_Topic t
LEFT OUTER JOIN Forum_Reply r ON t.id = r.topic_id
GROUP BY t.Id, t.Name
(Ben şu anda MySQL erişimi yok gibi üzgünüm, bu, yalnızca SQL Server üzerinde test edilmiştir)
Ayrıca, yapı IS zaten normalize. Aksine önerileri addition e-posta adreslerine kullanıcı adlarını izleme ilgi olduğunu varsayarak, siz, örneğin yapmak istedikleriniz hakkında varsayımlar yapıyoruz. Bu oldukça makul olduğunu, ancak yine de bir varsayımdır. Yanlış bir şey benzersiz bir kullanıcı bir tanıtıcı olarak e-posta adresini kullanarak, bir normalleşme açısından vardır.
Eğer bir veritabanı kurmak konusunda genel öneriler arıyorsanız Şimdi, biz size bu çok verebilir. Normalleşme önce, nesne adları (örneğin, sütunlar 'Adı' ve 'Tarih' gibi isimler vermeyin) gibi potansiyel anahtar kelimeleri kullanarak değil ile başlamak istiyorum.
Hiçbir yanıt olduğunda NULL değeri olma konusunda Matt yorumun ilgili: COALESCE kullanarak () fonksiyonu o çözecektir. (Tüm argümanlar null ise veya NULL) COALESCE () NULL olmayan ilk argümanı döndürür. Yani MAX MAX (r.Date) (COALESCE (r.Date, t.Date)) değiştirin.