mysql son tarih sorgulamak

1 Cevap php

Ben bu sorguyu çalıştırıyorum

SELECT sh.*,
       u.initials AS initals
  FROM database1.table1 AS sh
  JOIN database2.user AS u ON u.userID = sh.userid
 WHERE id = 123456
   AND dts = ( SELECT MAX(dts) from database1.table1 ) 
ORDER BY sort_by, category

Tablo1 ben böyle kayıtları var

dts                           status                    category         sort_by
2010-04-29 12:20:27        Civil Engineers          Occupation 1 
2010-04-28 12:20:27        Civil Engineers          Occupation 1 
2010-04-28 12:20:54 Married             Marital Status 2      2010-04-28 12:21:15 Smoker             Tobbaco    3
2010-04-27 12:20:27        Civil Engineers          Occupation 1 
2010-04-27 12:20:54 Married             Marital Status 2      2010-04-27 12:21:15 Smoker             Tobbaco    3
2010-04-26 12:20:27        Civil Engineers          Occupation 1 
2010-04-26 12:20:54 Married             Marital Status 2      2010-04-26 12:21:15 Smoker             Tobbaco    3

Benim verilerine bakarsanız, ben kategori ve sort_id tarafından son giriş tercih ediyorum. ancak bu tür (2010-04-29 00:20:27) 29 Mayıs'ta olduğu gibi bazı durumlarda sadece bir kayıt var. Yani bu durumda ben o son ve için işgal göstermek istiyorum onları geri kalanı (son). Ancak şu anda yalnızca bir satır görüntüler.

1 Cevap

ne var tahmin etmek gibi iyi çalışıyor, sorgu gibi bir şey, nasıl olsa ayarlanması gerekir

SELECT 
      sh.dts,
      cast( if( preAgg1.totalPerCatSort = 1, sh.status, ' ' ) as char(20))
          as SingleStatus,
      sh.category,
      sh.sort_by, 
      u.initials AS initals 
   FROM 
      database1.table1 AS sh,
      database2.user AS u,
      ( select 
              t1.category, 
              t1.sort_by, 
              max(dts) maxdts,
              count(*) totalPerCatSort
           from 
              database1 t1
           group by 
              t1.category, 
              t1.sort_by ) preAgg1
   WHERE
         sh.userid = u.userID 
     and sh.sort_by = preAgg1.sort_by
     and sh.category = preAgg1.category
     and sh.dts = preAgg1.maxdts
     and id = 123456  ?? Should this actually be the UserID column ??
  ORDER BY 
     sort_by, 
     category 

Eğer "preAgg1" sub-select içine "ID = 123456" uygulamak zorunda olabilir, ancak aksi takdirde, diğer "kullanıcılar" ve diğer tarih girişlerini olabilir hangi sütun / tablo için geçerli olan kimlik, yine, emin değilim Aynı tek aday kişi için sizin için ... Sizin çağrısı arıyoruz.

TÜM kayıtları yakalanma endişe başına, ben sadece "ve ID = 123456" niteleyicisini kaldırmak ve tüm iyi olmalı